我的父類,當然,有方法傳遞addStudent(學生或多個)。我的孩子課程BetterCourse繼承了課程。每次我嘗試運行BetterCourse.addStudent(S),我收到以下錯誤:C++繼承 - 在子類中運行父方法
error: no matching function for call to ‘BetterCourse::addStudent(Student (&)())’ note: candidates are: void Course::addStudent(Student)
我的理解是在告訴我傳遞addStudent()尚未在BetterCourse被定義,它的建議我使用一個存在在父類課程中。這有我困惑圍繞繼承的整體思路是不需要重新定義繼承函數和變量。
過程如下:
#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
}
BetterCourse:
#include <iostream>
#include <string>
#include "Course.h"
using namespace std;
class BetterCourse : public Course
{
public:
BetterCourse(string id, string name) : Course(id,name){};
};
在哪一行,你得到的錯誤?我沒有看到任何添加學生的電話,所以很難說出你想要做什麼。 – Cheezmeister
不要忘了'virtual'成員函數。 http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/topic/com.ibm.xlcpp8a.doc/language/ref/cplr139.htm –
爲什麼你需要虛擬方法,如果你想使用實現從基類? –