gpt4 book ai didi

c++ - 通过多个接口(interface)访问 Virtual Function

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:00 26 4
gpt4 key购买 nike

<分区>

我刚刚偶然发现了一个编译错误,我想知道为什么会这样。
代码:

struct Foo1
{
virtual int foo() = 0;
};
struct Foo2 : Foo1
{
virtual int foo(int i) = 0;
};
struct Bar : public Foo2
{
virtual int foo() { return 0; }
virtual int foo(int i) { return i; }
};
int main() {
Bar b;
Foo2* f2 = &b;
b.foo();
//f2->foo(); // this gives an error
return 0;
}

gcc 4.8.1 上的错误是

error: no matching function for call to ‘Foo2::foo()’

我想知道为什么编译器看不到 Foo1::foo 函数?我知道我可以通过将 using Foo1::foo 添加到 Foo2 类来解决这个问题,但是任何人都可以给我一个标准的引用,为什么编译器不能自己找函数?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com