#include <iostream>
#include <string>
using namespace std;
class Plane
{
private:
// data member
string name;
public:
// constructor
Plane();
// destructor
~Plane();
// member function
void setName(string na);
};
int main()
{
int num_plane;
cout << "How many planes do you have? ";
cin >> num_plane;
Plane *p_to_plane = new Plane[num_plane];
string name;
for (int i = 0; i < num_plane; ++i)
{
cout << "The No. " << (i + 1) << " plane's name: ";
cin >> name;
(p_to_plane + i)->setName(name);
}
delete [] p_to_plane;
system("Pause");
return 0;
}
У меня есть вопрос:
В основной функции есть цикл for
для добавления имен в каждую плоскость.
Однако, если я напишу p_to_plane[i]->setName(name)
, произойдет ошибка.
Компилятор просит меня написать p_to_plane[i].setName(name)
.
Я не могу понять, почему. Если это p_to_plane[i].setName(name)
, тогда p_to_plane[i]
должен быть объектом класса. Однако не должен ли быть указатель, указывающий на объект класса?
Кроме того, я не могу отличить p_to_plane[i]
от p_to_plane + i
. Они одинаковы?