我班上的私人成员:
const char arr1[];
const char arr2[];
我的构造函数:
className(const char a[], const char b[])
:arr1(a), arr2(b)
{
}
来自控制台窗口的错误消息是:
In constructor className::className(const char*, const char*):
error: incompatible types in assignment of const char* to const char [0]
请帮助,我做错了什么?
另一方面,我找到了一个解决方案...... 我使用指针作为我的私有成员变量,所以* arr1和* arr2,这是有效的。 :)
答案 0 :(得分:2)
您宣布您的成员为const char arr1[]
。我很惊讶编译器甚至允许你做出声明,因为它应该有一个固定的大小(如const char arr1[512]
)。
根据您的要求,您必须:
const char* arr1
- 请注意,这将不复制字符串;或std::string
)和/或为类成员分配内存,并复制答案 1 :(得分:0)
首先,您的编译器应该已经阻止了成员的声明:
const char arr1[];
const char arr2[];
这是非法的C ++,作为类成员的数组需要拼写它们的大小。
其次,const char p[]
在函数声明中使用时,文字意味着const char* p
。也就是说,指向常量char的指针。数组不是指针,不要混淆两者。但是,当传递给函数时,它们衰减指向它们的第一个元素的指针。