2014-11-09 41 views
-1

全部。我正在嘗試寫一個指針對象的鏈表。在不斷變化的OBJ到obj *,編譯器就開始抱怨我的初始化構造函數,並聲稱:無法從'char'轉換爲'myClass *'

a) Error C2078: too many initializers 

b) Error C2440: 'initializing' : cannot convert from 'char' to 'myClass *' 

我調用構造函數初始化爲包含在我的構造函數初始化定義的參數是相同的。我也不確定如何解釋b。這裏是我的代碼片段:

myClass * obj('a', 0.0, 1, 1, 1, 1, "string", "string", "string"); 

這裏是我的函數聲明:

myClass * obj(char *val1, double val2, int val3, int val4, long long val4, long long val5, string val6, string val7, string val8). 

建議的任何話嗎?我甚至不知道要包含哪些代碼。讓我知道如果我能包括任何東西來使這個更清楚。謝謝!

P.S.我是新發布的,因此我無法正確格式化一些文本。

回答

0

myClass * obj(char *val1 

不會接受

'a' 

但會愉快地接受

"a" 

注::你不應該試圖改變VAL1的內容在此功能。

錯誤::無法從「字符」轉換「myClass的*」表示

你是從這個功能,你應該返回指針MYCLASS object.In這種情況下返回字符也應該從返回地址禁止自己本地對象(堆棧中分配的對象)。

+0

將需要'爲const char *'接受'「一」'快樂地(即不使用過時的轉換) – Mat 2014-11-09 05:49:59

+0

所以你的意思是說[字符*海峽=「ABCD」]是不正確的?只要你不改變這個內容。 – ravi 2014-11-09 05:57:45

+0

確實會產生警告。 (clang:「警告:ISO C++ 11不允許從字符串文字轉換爲'char *'」) – Mat 2014-11-09 05:59:14

2

你不能初始化一長串參數的指針。


也許不相關或解精猜測,但你的意思是調用名爲obj函數,該函數返回一個指針,而這需要一個指針修改的C字符串作爲第一個參數?

在這種情況下,考慮例如

char s[] = "a"; 
myClass* p = obj(s, 0.0, 1, 1, 1, 1, "string", "string", "string");