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数组的对象数组?所以我需要使用引用和指针吗?
答案 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=
,但对于常规数组则不然。