0

形状.h

class Shape {

private:
string name;

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

三角形.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);
};

三角形.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 个点的三角形。当我尝试在 main 上创建一个三角形数组时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 数组的对象数组吗?所以我需要使用引用和指针吗?

4

1 回答 1

1

当你创建

Triangle Tri[50]; 

它会尝试调用default constructor来初始化数组中的那些元素Tri,但是,您没有提供这样的 adefault 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[];
} 

std::array尽管 C++ (自 C++11 起)有 C ++ 中的数组,但没有直接赋值overloaded operator=,但对于常规数组而言并非如此。

于 2013-05-07T14:49:41.073 回答