[omniORB] abstract class

Marek Cichy m_are_k at o2.pl
Wed Mar 4 21:22:26 GMT 2009


Hi list
My problem: I have succesfully compiled my idl file, included .hh and 
.cc files into project and defined interface functions. When I compile 
the project I get an error " C2259: 'Simple_impl' : cannot instantiate 
abstract class". I compared my project with few examples and everything 
seems to be written properly. Below I listed .idl file and 
implementations of interface functions. Can someone give me some help? I 
try to create object in a following way:

Simple_impl* simple_servant = new Simple_impl();

My SW:
OS: WXP SP3
ORB: omniORB 4.1.2
IDE: VS2008

ITestServer.idl:
-------------------------------------------------------
#ifndef _ITEST_SERVER_
#define _ITEST_SERVER_

module ITestServer {
    typedef char ct [1000];
    typedef double dt [1000]; 
   
    interface ISimple {
      char _get_char(in unsigned short _index);
      double _get_double(in unsigned short _index);
      void _set_char(in char c,in unsigned short _index);
      void _set_double(in double d,in unsigned short _index);
    };
    interface IComplex { 
      void _get_char_table(inout ct _char_table);
      void _get_double_table(inout dt _double_table);
      void _fill_char_table(in ct _char_table);
      void _fill_double_table(in dt _double_table);
    };
};
#endif  // _ITEST_SERVER_
------------------------------------------------------
functions declarations:
------------------------------------------------------
#include "ITestServer.h"

class Simple_impl : public virtual POA_ITestServer::ISimple
{
private:
    char tc[1000];
    double td[1000];
public:
    Simple_impl();
public:
    virtual char _get_char(unsigned short _index) 
throw(CORBA::SystemException);
    virtual double _get_double(unsigned short _index) 
throw(CORBA::SystemException);
    virtual void _set_char(char c, unsigned short _index) 
throw(CORBA::SystemException);
    virtual void _set_double(double d, unsigned short _index) 
throw(CORBA::SystemException);
};

class Complex_impl : public virtual POA_ITestServer::IComplex
{
private:
    char tc[1000];
    double td[1000];
public:
    Complex_impl();
public:
    virtual void _get_char_table(char _char_table[]) 
throw(CORBA::SystemException);
    virtual void _get_double_table(double _double_table[]) 
throw(CORBA::SystemException);
    virtual void _set_char_table(char _char_table[]) 
throw(CORBA::SystemException);
    virtual void _set_double_table(double _double_table[]) 
throw(CORBA::SystemException);
};
-------------------------------------------------
functions definitions:
-------------------------------------------------
#include "server.h"

Simple_impl::Simple_impl()
{
    for (int i=0;i<1000;i++)
        this->tc[i]='s';
    for (int i=0;i<1000;i++)
        this->td[i]=3.14;
};
char Simple_impl::_get_char(unsigned short _index) 
throw(CORBA::SystemException)
{
    return this->tc[_index];
};
double Simple_impl::_get_double(unsigned short _index) 
throw(CORBA::SystemException)
{
    return this->td[_index];
};
void Simple_impl::_set_char(char c,unsigned short _index) 
throw(CORBA::SystemException)
{
    this->tc[_index]=c;
};
void Simple_impl::_set_double(double d,unsigned short _index) 
throw(CORBA::SystemException)
{
    this->td[_index]=d;
};
P.S.
At least could someone give any sign of life? I receive only answers for 
other's questions.



More information about the omniORB-list mailing list