1
的參數如果我有一類說C++ - 純虛函數
class Base {
public:
virtual void func() = 0;
};
這對於其他兩類
class DerivedA1 : public Base {
public:
virtual bool func(string command);
};
class DerivedB1 : public Base {
public:
virtual void func();
}
class DerivedA2 : public DerivedA1 {
public:
bool func(string command); //This one implements it differently
}; //its base class.
的基礎是,上面所允許?我聲明func()沒有參數,但後來我用它的參數。我有我的代碼類似的情況,我不能發表,因爲這是它的一所學校分配的一部分,我越來越相似
error: no matching function for call to Base::fucn(std::string&)
note: candidate is: virtual bool Base::move();
note: candidate expects 0 arguments, provided 1
我想FUNC()的錯誤將在其不同的不同使用派生類。我該如何解決這個問題?
不,這是不允許的。覆蓋基類的'虛函數'必須具有完全相同的簽名。 –
有一個名爲* contravariance *的概念,它允許派生類改變方法的參數(不是任意的),但這不適用於此。您可以使用*默認參數*:http://en.cppreference.com/w/cpp/language/default_arguments – mike
您可以爲參數創建另一個類。 virtual void func(MyBaseParemeterClass *)= 0; – QuentinUK