我的情况类似于dynamic_cast<B *> (&a) gives a warning。
我有一个基类和一个派生类:
struct Base {
virtual ~Base() = default;
int foo() { return 5; }
};
struct Derived : public Base {
int bar() { return 10; }
};
我输入了单元测试,检查foo()
对于Base
和Derived
类都返回5,bar()
对于Derived
类返回10。
...
using Types = ::testing::Types(Base, Derived);
TYPED_TEST(Foo, Bar){
auto obj = std::make_unique<ParamType>();
auto *derived = dynamic_cast<Derived*>(obj.get());
// check logic for Base
// check logic for Derived if derived != nullptr
}
在使用ParamType
等于Base
的测试示例化之后,使用dynamic_cast
的行生成关于dynamic_cast从未成功的警告,因为它应该成功。
如何在gcc编译器上禁用此警告?
1条答案
按热度按时间e0bqpujr1#
您可以使用
if constexpr
,沿着: