Хранение массивов в объекте C ++

0

У меня есть класс 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++

Я не уверен, могу ли я сделать это с использованием массивов?

  • 1
    добавить координатный вектор в класс вместо использования глобальных массивов?
  • 0
    Но если я хочу сделать это с помощью массивов, это все еще возможно? @isim
Показать ещё 3 комментария
Теги:

1 ответ

0
Лучший ответ

Класс, безусловно, может содержать массив или членов любого другого допустимого типа:

class Square: public Shape
{
private:
   Point vertices_ [4];
};

Вопрос в том, что вы хотите? Или, может быть, вам нужен один Точка, плюс ширина и высота.

... и как вы получаете информацию на площади? Лучший способ - через ctor:

Square::Square (const Point& upperLeft, int width, int height);

Я вижу, вы опубликовали комментарий: не могу ли я использовать глобальный массив? Ну, конечно, вы можете делать все, что хотите. Но это будет путать, и поэтому сложнее писать, отлаживать и поддерживать. Если вы ДОЛЖНЫ использовать глобальный массив, Square может хранить не точку, а индекс для этого глобального массива. Но, пожалуйста, не надо. Там нет необходимости, и это еще один уровень сложности.

  • 0
    Ну, я просто хочу хранить только координаты, нет необходимости в ширине и высоте. Просто массив для хранения тех. Но я не уверен, как это сделать, а затем сохранить его в самом векторе.
  • 0
    Тогда код выше должен сделать это для вас, верно?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню