2013-02-11 44 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; 
}