2014-11-09 66 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"); 
相关问题