所以我是 C++ 的新手,并且有动态语言的背景,这可能是一个新手问题。我试图写一个古老的练习,见下文:
class Person
{
public:
Person(char n[], int a) {
name = n;
age = a;
}
int age;
char name[];
};
int main(int argc, char const *argv[])
{
Person p("John", 25);
return 0;
}
这会引发错误:
main.cpp(8) : error C2440: '=' : cannot convert from 'char []' to 'char []'
There are no conversions to array types, although there are conversions
to references or pointers to arrays
为什么需要从同一类型转换?顺便说一句,这是我的完整代码和完整错误。感谢您的帮助!
最佳答案
有一个类型叫做 char []
,但它是一个不完整的数组类型,这是一个有点高级的话题。如果它在严格模式下编译,编译器会报告不完整的数组不能是类成员,这应该可以防止出现错误。但实际上你偶然发现了一个 GCC 扩展,它很少与 C++ 兼容,因为它需要通过 malloc
分配内存。 .
无论如何,C++ 库中确实有变长字符串,尽管不是“ native ”类型。您需要包括 <string>
, 它被称为 std::string
.
#include <string>
class Person
{
public:
Person(std::string n, int a) {
name = n;
age = a;
}
int age;
std::string name;
};
int main(int argc, char const *argv[])
{
Person p("John", 25);
return 0;
}
关于C++ - 无法从 'char []' 转换为 'char[]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625954/