【问题标题】:Is it possible for a friend function to create new object? C++朋友功能是否可以创建新对象? C++
【发布时间】:2012-04-25 18:16:38
【问题描述】:

您好,我正在尝试对学校系统进行一些模拟。

我想知道我是否有 2 个课程: 1:校长 2:老师 那么 Principal 类的方法是否可以创建 Teacher 类的新对象?

这是我想做的(方法 AddTeacher):

class PRINCIPAL
{
    char* name;
    int wage;
    unsigned long long id;
public:
    void showinfo() const;
    PRINCIPAL();//constructor, but there will be overloaded constructors in this class;
    ~PRINCIPAL();
        void addTeacher(char* nameofobject,char* name,char* position,int wage, unsigned long long id);
    void removeTeacher(TEACHER& teacher); //method which will remove object of class TEACHER;
    void changeTEACHERSsalary(TEACHER& teacher);
    void changeTEACHERSposition(TEACHER& teacher);
}

class TEACHER
{
    char* name;
    char* position;
    int wage;
    unsigned long long id;
    friend class PRINCIPAL;
public:
    TEACHER(char* name,char* position,int wage, unsigned long long id);
    ~TEACHER();
    void gradeStudent(STUDENT& s,int grade,char* subject);
    void changestudentsgrade(STUDENT& s,char* subjectname,int oldgrade,int newgrade);
    void ViewStudentsAverageFromSubject(STUDENT& s, char* subjectname) const;
    void ViewStudentsAverage(STUDENT& s) const; // average from all subjects;
    void ViewClassAverage(KLASA& k) const; // average from all subjects of whole object KLASA(class);
    void ViewClassAverageSubject(KLASA& k,char* subjectname) const; // average from selected subject of whole object KLASA(class);
}

另外我想问一下它是否可以做以下事情:我想做一个约束,它只允许 Principal 类的一个对象存在。如果可能的话,你能解释一下怎么做吗?

提前谢谢你。

P.S addTeacher 看起来像这样:

void addTeacher(char* nameofobject,char* name,char* position,int wage, unsigned long long id){
TEACHER nameofobject(char* name,char* position,int wage, unsigned long long id);
}

【问题讨论】:

  • 如果你只想要一个单一的实例,让 Principal 成为一个单例类,但这是有问题的。否则在 Teacher 类中引入一个静态 Principal 对象。
  • 附带说明,使用std::string 而不是char*,让自己的生活更轻松。
  • 我不明白您要删除 TEACHER 的内容。来自某种容器?
  • 好吧 removeTeacher 方法应该删除班主任的对象-这是另一个问题怎么做?

标签: c++ class function friend


【解决方案1】:

校长要添加老师,删除老师是什么?你在某个地方需要一群老师。您缺少一个关键概念,即SCHOOL。一所学校有一个校长,大概只有一个,所以校长成员可以像PRINCIPAL principal;

一所学校也有一群教师。这是 C++ 模板库容器类模板之一的尖叫。这为您提供了一些东西,主体对象可以轻松地将教师添加到教师或从中删除教师。

【讨论】:

  • 所以你说我应该制作教师单链表?但是为什么我不能简单地删除对象 Teacher ???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2010-10-11
  • 2015-09-29
相关资源
最近更新 更多