字符* 数组出现问题

Having trouble with char* arrays

本文关键字:问题 数组 字符      更新时间:2023-10-16
private:
    char * args[];
public:
    Command(char * a[]){args = a}

尝试运行此代码时,我得到

char**分配给char* [0]时不兼容的类型

我真的很难理解发生了什么。

首先,char * args[];是不正确的。在标准C++数组在定义时必须具有指定的大小。(明显的)例外是当您编写类似 int arr[] = {1,2,3,4,5}; 的东西时,但是在这种情况下,编译器会自动将大小设置为 5,因为它在编译时确定大小。

其次,不能复制数组。在您的函数中

Command(char * a[]){args = a}

a衰变成char**.然后你尝试分配给args,这是一个数组,一个类型为 char** 的指针。这是行不通的。不能分配给数组。

如果您分配/复制数组,最好的办法是使用标准容器,例如 std::vector

声明char * args[]表示指向非const char的指针数组。这是无效代码。标准C++不允许将未知绑定数组作为数据成员。

原始数组不可分配,因此构造函数主体中的赋值也是无效代码。