函數(shù)具有相同的名稱(chēng),但在派生類(lèi)中具有不同的簽名。我有一個(gè)名稱(chēng)相同的函數(shù),但在基類(lèi)和派生類(lèi)中有不同的簽名。當(dāng)我試圖在從派生繼承的另一個(gè)類(lèi)中使用基類(lèi)的函數(shù)時(shí),我會(huì)收到一個(gè)錯(cuò)誤。請(qǐng)參閱下列代碼: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編譯器收到以下錯(cuò)誤: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一切正常。這有什么問(wèn)題嗎?
3 回答

一只甜甜圈
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
絕對(duì)是編譯錯(cuò)誤。舊編譯器過(guò)去使用“A:foo;”而不是“使用A:foo;”,但前者在C+中不受歡迎。
- 3 回答
- 0 關(guān)注
- 560 瀏覽
添加回答
舉報(bào)
0/150
提交
取消