创建存储数组属性的对象数组

时间:2013-05-07 14:45:20

标签: c++ arrays object inheritance

Shape.h

class Shape {

private:
string name;

public:
Shape(name);
string getName();
void setName(string);
};

Triangle.h

class Triangle: public Shape {

private:
int x;
int y;

public:
Triangle(name,int[3],int[3]);
int getX();
int getY();
void setX(int);
void setY(int);
};

Triangle.cpp

Triangle::Triangle(string name,int _x[],int_y[]):Shape(name) {
x[] = _x[];
y[] = _y[];

}

int Square::getX() {
return x
}

int Square::getY() {
return y;
}

void Square::setX(int _x) {
x = _x;
}

void Square::setY(int _y) {
y = _y;
}

我需要创建三角形,其名称和(x,y)的3个点。当我尝试在主Triangle Tri[50]上创建一个三角形数组时;我有以下错误

Triangle::Triangle(std::string,int*,int*)
candidates expects 3 arguments, 0 provided
Triangle::Triangle(const Triangle&)
candidates expects 1 argument, 0 provided

可以帮我查一下构造函数的错误吗?是因为我正在创建一个存储x和y数组的对象数组?所以我需要使用引用和指针吗?

1 个答案:

答案 0 :(得分:1)

创建时

Triangle Tri[50]; 

它会尝试调用default constructor来初始化Tri数组中的这些元素,但是,您没有提供这样的default constructor并且您没有使用3个参数调用构造函数因此,编译器抱怨。

同时,您似乎尝试在Triangle的构造函数中使用另一个数组直接初始化一个数组:

Triangle::Triangle(string name,int _x[],int_y[]):Shape(name) {
   x[] = _x[];//^^I don't understand how this will work in practice.
   y[] = _y[];
} 

C ++中的数组没有直接赋值,尽管C ++ std::array(因为C ++ 11)有overloaded operator=,但对于常规数组则不然。