2013-11-24 34 views
2

我目前有一个中断,我是新的c + +和CORBA。我想分配一个CORBA :: Char,但是我得到一个编译器错误“错误:从'CORBA :: Char *'无效转换为'CORBA:Char'。有没有人有一个想法,我的代码有什么问题,以及如何写纠正从CORBA :: Char *到CORBA的无效转换:: Char

感谢 西蒙

class Medium_impl : virtual public POA_Media::Medium { 
public: 
    CORBA::Char gettype(); 
    void settype(CORBA::Char); 

private: 
    CORBA::Char type;         
}; 

Medium_impl::Medium_impl (char* _oidstr) { 
    type='V'; 
} 

void Medium_impl::settype(CORBA::Char _type){ 
    type = _type; 
} 

CORBA::Char Medium_impl::gettype(){ 
    return type; 
} 

我得到的错误在测试了Methode AREF - >的setType(类型[1]);?!

void Mediathek_impl::test (void) { 

CORBA::Char type[10][1]; 

strcpy(type[0],"V"); 

for(int i = 0; i<=9;i++){ 
    char oidstr[20]; 

    sprintf(oidstr,"medium_%d.acc",count); 
    PortableServer::ObjectId_var  tmpoid=PortableServer::string_to_ObjectId(oidstr); 

    CORBA::Object_var obj = mypoa->create_reference_with_id (tmpoid,"IDL:Medium:1.0"); 
    ::Media::Medium_ptr aref = ::Media::Medium::_narrow (obj); 
    assert (!CORBA::is_nil (aref)); 
    oid[count] = mypoa->reference_to_id(aref); 

    //here I get the Compiler-error 
    aref ->settype(type[i]);  

    count ++; 
} 
+0

你是一个数组(衰减到指针)时,它需要一个字符。 – chris

+1

你的代码的错误*正是错误消息所说的:你试图将一个char指针存储到char中。如何解决这个问题取决于你真正想做什么。你还没有解释你实际想要做什么*做* – jalf

+0

IDL到C++ 11语言映射比IDL到C++语言映射更容易学习,请查阅http://swsupport.remedy.nl了解更多信息详情以及如何获得TAOX11的评估许可 –

回答

1

type已申报如:

CORBA::Char type[10][1]; 

然后,type[i]CORBA::Char*和建设者抱怨不知道如何将其转换为CORBA::Char。我认为,你想要的:

aref ->settype(type[i][0]); 

CORBA::Char type[10]; 

strcpy(type,"V"); 
相关问题