我正在尝试学习如何使用数组/指针访问构造函数。 我知道如何访问类成员函数,但我仍然坚持如何访问构造函数。
这个程序: 1.询问学校数量。 2.询问学校名称。 3.显示每个学校名称。
#include<iostream>
#include<string>
using namespace std;
class School
{
public:
School(string name = "")
{ schoolname = name;}
void Display()
{ cout << "School name is " << schoolname;}
private:
string schoolname;
};
int main()
{
string sname;
int schoolNO;
School *myschool;
myschool[10];
cout << "Enter number of school : ";
cin >> schoolNO;
for (int i = 0; i < schoolNO; i++)
{
cout << "Enter school name : ";
cin >> sname;
myschool[i] = new School(sname);*//The error stated is in this line...*
myschool[i].Display();
}
}
答案 0 :(得分:3)
问题是mySchool
是一个对象数组,而不是指针数组,所以你不能使用new
指定一个指向它的元素的指针。
替换它:
School *myschool;
myschool[10];
为此:
School* myschool[10];
现在你有一个指针数组,new
将起作用。
答案 1 :(得分:3)
您的错误与构造函数无关。它与变量mySchool
您在设置阵列时所做的工作无效。你想要一个大小为10 pointers to School objects
的数组。您创建了myschool
作为pointer to a school
。此外myschool[10];
无效。
所以你需要将School *myschool
的声明更改为School *myschools[10];
你还应该删除我上面提到的错误陈述。
进一步,强烈建议选择引用其建模对象多样性的名称。 myschool
并非用于指向或存储单个学校;它是多个对象的容器。考虑将其命名为schools
或myschools
,以便向使用它的人明确说明对象的多样性。