【发布时间】:2013-10-14 22:07:08
【问题描述】:
我收到有关非静态成员的无效使用以及结构成员无法正常工作的其他问题的错误,我无法理解问题是什么,谢谢。
#include <iostream>
#include <string>
using namespace std;
struct classroom {
int RoomNumber;
int NumberOfChairs;
int NumberOfStudents;
int ListOfStudents[NumberOfStudents];
string LectureName;
bool Window, Projector, Available;
}classroom;
int main() {
cout << "Please enter your room number" << endl;
cin >> classroom.RoomNumber;
cout << "Enter the name of the Lecture" << endl;
cin >> classroom.LectureName;
cout << "Enter number of students" << endl;
cin >> classroom.NumberOfStudents;
cout << "Enter " << classroom.NumberOfStudents << " Student Names" << endl;
cin >> classroom.ListOfStudents;
cout << "Enter number of chairs" << endl;
cin >> classroom.NumberOfChairs;
cout << "Are there any Windows? (Y/N)" << endl;
cin >> classroom.Window;
cout << "Are there any Projectors? (Y/N)" << endl;
cin >> classroom.Projector;
cout << "Are there any Available? (Y/N)" << endl;
cin >> classroom.Available;
return 0;
}
错误
prog.cpp:10:5: error: invalid use of non-static data member ‘classroom::NumberOfStudents’
int NumberOfStudents;
^
prog.cpp:11:20: error: from this location
int ListOfStudents[NumberOfStudents];
^
prog.cpp: In function ‘int main()’:
prog.cpp:28:18: error: ‘struct classroom’ has no member named ‘ListOfStudents’
cin >> classroom.ListOfStudents;
^
【问题讨论】:
-
我倾向于给类型和实例不同的名称以避免混淆。例如。
struct ClassRoom和classroom。话虽如此,您需要检查名称查找规则以查看编译器是否正确认为 main 中的classroom指的是类型。 -
正如 tristan 所说,您应该使用 const 大小的数组或一些标准容器,如向量或列表