访问私有类C ++中的结构

时间:2014-02-10 04:37:54

标签: c++ class struct

我迷失在试图弄清楚如何访问类的私有部分内部的这个结构。如果可能的话,我需要代码保留为结构。 非常感谢你的帮助。

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);
};

2 个答案:

答案 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);`
相关问题