【发布时间】:2012-10-13 23:31:26
【问题描述】:
我的父类 Course 有方法 addStudent(Student s)。我的子类 BetterCourse 继承自 Course。每次我尝试运行 BetterCourse.addStudent(s) 时,都会收到以下错误:
错误:没有匹配的调用函数 ‘BetterCourse::addStudent(Student (&)())’ 注意:候选人是:void Course::addStudent(Student)
我知道它告诉我 addStudent() 尚未在 BetterCourse 中定义,它建议我使用父类 Course 中存在的那个。这让我感到困惑,因为围绕继承的整个想法不需要重新定义继承的函数和变量。
课程如下:
#include <iostream>
#include <string>
#include "Student.h"
using namespace std;
class Course
{
protected:
string id;
string name;
public:
Course();
Course(string id, string name);
void addStudent(Student s);
};
Course::Course()
{
//code
}
Course::Course(string id, string name)
{
//code
}
void Course::addStudent(Student s)
{
//code
}
更好的课程:
#include <iostream>
#include <string>
#include "Course.h"
using namespace std;
class BetterCourse : public Course
{
public:
BetterCourse(string id, string name) : Course(id,name){};
};
【问题讨论】:
-
您在哪一行得到错误?我没有看到任何对 addStudent 的调用,因此很难判断您要做什么。
-
不要忘记
virtual成员函数。 publib.boulder.ibm.com/infocenter/comphelp/v8v101/topic/… -
如果要使用基类的实现,为什么需要虚拟方法?
-
对于方法
addStudent,没错。但是我已经看到了寻找虚拟析构函数的错误,并且在某些时候某些东西将是虚拟的。毕竟,这只是对未来的暗示,正如我喜欢提到的en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29——问题应该是为了学习,还是不是?
标签: c++ inheritance