有char *数组的问题

时间:2016-02-07 01:55:10

标签: c++

def starts_at
 DateTime.strptime(attributes['starts_at'], whatever_format).in_time_zone(whatever_timezone)
end

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

  

private: char * args[]; public: Command(char * a[]){args = a} char**

的分配不兼容

我很难理解正在发生的事情。

2 个答案:

答案 0 :(得分:5)

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

其次,您无法复制数组。在你的功能

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

a衰减到char**。然后,您尝试分配给args,这是一个数组,类型为char**的指针。这不行。您无法分配给数组。

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

答案 1 :(得分:2)

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

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