gpt4 book ai didi

c++ - gcc 找不到基类对象

转载 作者:行者123 更新时间:2023-12-05 03:26:06 25 4
gpt4 key购买 nike

以下代码不能用 gcc 编译,但可以用 clang 编译。

struct Base {
void base() {}
};

template< typename T >
struct Foo : Base {

struct Bar : Base {
};

struct Baz : Bar {
void f() {
base();
}
};
};

int main() {
Foo<int>::Baz{}.f();
}

gcc 吐出以下错误:

13:11: error: cannot call member function 'void Base::base()' without object
13 | base();
| ~~~~^~

有趣的是,如果我将它更改为 this->base();Base::base();,然后它会编译。

为什么 gcc 找不到 Base 类对象? Baz 显然是 Base 的子类。

最佳答案

我想,这与这个问题中的问题相同:

GCC issue: using a member of a base class that depends on a template argument

在模板内部,编译器不检查基类模板,因此找不到 base()方法,不添加 this->Base:: .

关于c++ - gcc 找不到基类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71840422/

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