C++ - 无法从 'char []' 转换为 'char[]'

标签 c++ types char

所以我是 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/

相关文章:

c - while循环中的哪条语句会先执行?

C++ 如何拥有相同方法的不同版本?

c++ - 乱七八糟的是ctime、time.h、sys/time.h

c++ - 从 C++ 中的两个相关 vector 进行随机选择的最快方法是什么?

types - Go中函数变量的类型

MySQL 整数存储要求

java - 您将如何处理制作一个条目比标准实现允许您访问的条目更多的数组或列表

C++ 析构函数过早地删除东西(对象、指针?)

c - C中使用getchar存储用户输入的多个字符

c++ - 在数组 C++ 中插入整数