我迷失在试图弄清楚如何访问类的私有部分内部的这个结构。如果可能的话,我需要代码保留为结构。 非常感谢你的帮助。
const int MAX_CHAR = 101;
const int NAME_COURSE_WIDTH = 20;
const int DESCRIPTION_WIDTH = 40;
const int DUE_DATE_WIDTH = 20;
const int COURSE_ENTRY_CAPACITY = 100;
class Task
{
private:
struct CourseEntry
{
char course[MAX_CHAR];
char description[MAX_CHAR];
char dueDate[MAX_CHAR];
} course;
public:
void displayMenu();
char readInCommand();
void processCommand(char command, CourseEntry list[], int& listSize);
void readInEntry(CourseEntry& anEntry);
void readInCourse(char course[]);
//database related functions
void displayAll(const CourseEntry list[], int listsize);
void addEntry(const CourseEntry& anEntry, CourseEntry list[], int& listSize);
bool searchEntry(const char course[], CourseEntry& match, const CourseEntry list[], int listSize);
void loadCourseEntry(const char fileName[], CourseEntry list[], int& listSize);
void saveCourseEntry(const char fileName[], const CourseEntry list[], int listSize);
//standard input tools
int readInt(const char prompt[]);
void readString (const char prompt[], char inputStr[], int maxChar);
};
答案 0 :(得分:1)
您应该将结构的定义移到类之外,并将变量保持为私有:
struct CourseEntry
{
char course[MAX_CHAR];
char description[MAX_CHAR];
char dueDate[MAX_CHAR];
}
class Task {
private:
CourseEntry course;
public:
...
}
答案 1 :(得分:0)
如果你在类CourseEntry
中声明public
结构Task
并且每次使用它时都会更好,更好并保持封装,只需将类名放在之前,就像这样Task::CourseEntry
。
例如,main
中的调用将是(C ++ 11样式):
Task myTask;
//initialize somehow your struct
Task::CourseEntry myStruct = {//here you can do it
};
//call readInEntry
myTask.readInEntry(myStruct);`