2013-11-24 5 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 -> SetType (тип [я]);?!

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 был объявлен as:

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

then type[i] is CORBA::Char*, а строитель жалуется на то, что не знает, как его преобразовать в CORBA::Char. Я думаю, что вы хотите:

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

или

CORBA::Char type[10]; 

strcpy(type,"V"); 
Смежные вопросы