【发布时间】:2015-07-02 20:41:59
【问题描述】:
抱歉标题令人困惑,基本上我创建了两个类,一个是对象,另一个是包含此类对象数组的框。所以我想做的是在对象类中创建一个函数/构造函数,它接受一个整数数组并将它们存储在盒子里。我希望能够通过box类构造函数调用这个函数来初始化这些对象。所以我尝试了类似下面的方法,但它根本不起作用,因为只有数组的第一个值被传递。我做错了什么?
#include <iostream>
#include <string>
class object{
string objectName;
int values[];
public:
void createObject(int[]);
}
class Box{
object objects[100];
public:
Box();
}
Box::Box (void){
int array1[2];
int array2[15];
object[1].createObject(array1);
object[2].createObject(array2);
}
Object::Object(int Values[]){
values = Values;
}
【问题讨论】:
-
T[](大部分)不是 C++ 中的类型。您的字段int values[];必须是int *values;并且还要传递长度,或者更好的是std::vector<int> values; -
你能解释一下关于传递长度的更多信息吗?抱歉,我对 C++ 很陌生
-
@Flashpaper 他的意思是使用向量而不是数组,因为这样您就不必担心分配集合大小。
-
与其他语言中的数组不同,您不能将它们传递给函数,即使语法表明您可以。不要上当!相反,在函数内部,你得到的只是一个指针,它不携带任何关于大小的信息。因此,请使用向量。
-
作为 C++ 新手,我建议学习指针、数组和内存分配。如果在工作中编码,一定要使用
vector<>!
标签: c++ arrays class constructor