У меня есть класс Shape для вычисления области формы среди других атрибутов и функций, и мой класс Square наследует от нее.
В основном у меня есть вектор указателей формы. После того, как пользователь вводит свою форму и координаты, я должен хранить их координаты в объекте фигуры, а затем хранить объект в самом векторе.
Я не уверен, как хранить массив в объекте, или если это возможно. Вот что я пробовал.
//Global variables
vector<Shape> *Shape;
void CalculateShapeData()
{
//Variables declaration
string shape;
//Store x,y coordinates in array
int tempx[100],tempy[100];
cout << "Please enter name of shape : " << endl;
cin >> shape;
cout << "Please enter special type: " << endl;
if (shape == "Rectangle")
{
}
else if (shape == "Square")
{
for (int i = 0; i < 4;i ++)
{
cout << "Enter x-coordinate of pt " << i << ":" << endl;
//cin >> tempx[i];
cout << "Enter y-coordinate of pt " << i << ":" << endl;
//cin >> tempy[i];
//Store coordinates into square object
}
}
Я читал альтернативу здесь, но он использует структуры. сохранение ввода в массивы C++
Я не уверен, могу ли я сделать это с использованием массивов?
Класс, безусловно, может содержать массив или членов любого другого допустимого типа:
class Square: public Shape
{
private:
Point vertices_ [4];
};
Вопрос в том, что вы хотите? Или, может быть, вам нужен один Точка, плюс ширина и высота.
... и как вы получаете информацию на площади? Лучший способ - через ctor:
Square::Square (const Point& upperLeft, int width, int height);
Я вижу, вы опубликовали комментарий: не могу ли я использовать глобальный массив? Ну, конечно, вы можете делать все, что хотите. Но это будет путать, и поэтому сложнее писать, отлаживать и поддерживать. Если вы ДОЛЖНЫ использовать глобальный массив, Square может хранить не точку, а индекс для этого глобального массива. Но, пожалуйста, не надо. Там нет необходимости, и это еще один уровень сложности.