2013-05-07 2 views
0

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; 
} 

мне нужно создать треугольник, берет имя и 3 точки (x, y). когда я пытаюсь создать массив треугольника на главном 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

При создании

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=, но это не относится к регулярному массиву.