2013-02-11 51 views
0

我试图指针赋值给一个值像前面这样类对象的指针就不会分配到字符串

string name; 
    XMLSerial * ptr; 

    if(name == "Armor") 
    { 
     ptr = &name; 
    } 

名称被初始化。 XMLSerial是我写的一个类。我正试图将一些XML反序列化为对象。如果名称是我定义的类或对象之一,我希望XMLSerial对象指针为对象创建空间。

我得到的错误是cannot convert std::string* {aka std::basic_string<char>*} to XMLSerial* in assignment

+3

你有什么期望上面的代码呢?你为什么要指向一个带有指向基本不同类型的指针的'string'? – 2013-02-11 00:24:26

+0

只能通过将指针'T1 *'分配给指针'T2 *'来解析XML。 – 2013-02-11 00:25:45

+0

你应该向我们解释为什么你认为它应该编译,因为它对我来说显然是错误的。 – 2013-02-11 00:44:43

回答

0

假设您的XMLSerial对象可以从string构建,这将起作用。

string name; 
XMLSerial * ptr; 

if(name == "Armor") 
{ 
    ptr = new XMLSerial(name); 
} 

编辑:

而且,正如评论说,处理指针和new/delete拿出自己的责任。

+3

让我们小心在没有更多信息的情况下抛出'new',在这种情况下,我想。 – 2013-02-11 00:28:09

1

您发布的代码应该完全按照您描述的方式失败。很难确切地知道你已经走到哪里,但你的XMLSerial可能有一个operator=(std::string),你正在尝试使用。

如果是这样的情况下,更换与您的代码:

string name; 
XMLSerial xml; 

if(name == "Armor") 
{ 
    xml = name; 
}