函數具有相同的名稱,但在派生類中具有不同的簽名。我有一個名稱相同的函數,但在基類和派生類中有不同的簽名。當我試圖在從派生繼承的另一個類中使用基類的函數時,我會收到一個錯誤。請參閱下列代碼:class A{
public:
void foo(string s){};};class B : public A{
public:
int foo(int i){};};class C : public B{
public:
void bar()
{
string s;
foo(s);
}};我從GCC編譯器收到以下錯誤:In member function `void C::bar()': no matching function for call to `C::foo(std::string&)' candidates are: int B::foo(int)如果我把int foo(int i){};下課B,或者如果我把它重命名為foo1一切正常。這有什么問題嗎?
- 3 回答
- 0 關注
- 566 瀏覽
添加回答
舉報
0/150
提交
取消
