gpt4 book ai didi

c++ - 关于重写虚方法的不明确警告

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:55 25 4
gpt4 key购买 nike

<分区>

我有一个 Base 类,它提供一些业务逻辑和虚拟方法,可以进一步覆盖。此外,我想用 Decorator 扩展一些继承自 Base 的类。这是简化的设置:

struct Base
{
~Base() = default;
virtual void foo(int) {};
virtual void foo(double) {};
};

template<typename T>
struct Decorator : public T
{

};

struct Middle : public Decorator<Base>
{
virtual void foo(int) override {};
};

struct Final : public Middle
{
virtual void foo(double) override {};
};

当我使用 clang 和 -Wall -Wextra 编译代码时,我收到以下警告:

21 : <source>:21:18: warning: 'Final::foo' hides overloaded virtual function [-Woverloaded-virtual]
virtual void foo(double) override {};
^

16 : <source>:16:18: note: hidden overloaded virtual function 'Middle::foo' declared here: type mismatch at 1st parameter ('int' vs 'double')
virtual void foo(int) override {};
^

GCC 没有提示,老实说,我不知道 clang 在这里发现了什么问题。

我使用编译器资源管理器运行最近的 clang 和 GCC:https://godbolt.org/g/fC5XXT

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