无法从'char'转换为'myClass *'

时间:2014-11-09 05:46:20

标签: c++ pointers linked-list char derived-class

所有。我正在尝试编写指针对象的链接列表。在将obj更改为obj *后,编译器开始抱怨我的初始化构造函数,声称:

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。我是新来的,所以为什么我不能正确地在这里格式化一些文本。

2 个答案:

答案 0 :(得分:2)

您无法使用长参数列表初始化指针。


也许是不相关或不正确的猜测,但你的意思是调用一个名为obj的函数,它返回一个指针,并将一个指向可修改的C字符串的指针作为第一个参数?

在这种情况下,请考虑例如。

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

答案 1 :(得分:0)

myClass * obj(char *val1

不接受

'a'

但很乐意接受

"a"

注意::您不应尝试在此函数中更改val1的内容。

错误::无法从'char'转换为'myClass *'表示

你从这个函数返回char,你应该返回指向myclass对象的指针。在这种情况下你也应该禁止自己返回本地对象的地址(在堆栈上分配的对象)。