相关疑难解决方法(0)

c ++通过clang重载虚函数警告?

clang在编译以下代码时发出警告:

struct Base
{
    virtual void * get(char* e);
//    virtual void * get(char* e, int index);
};

struct Derived: public Base {
    virtual void * get(char* e, int index);
};
Run Code Online (Sandbox Code Playgroud)

警告是:

warning: 'Derived::get' hides overloaded virtual function [-Woverloaded-virtual]
Run Code Online (Sandbox Code Playgroud)

(当然需要启用上述警告).

我不明白为什么.请注意,在Base中取消注释相同的声明会关闭警告.我的理解是,由于两个get()函数具有不同的签名,因此不能隐藏.

clang对吗?为什么?

请注意,这是在MacOS X上,运行最新版本的Xcode.

clang --version
Apple LLVM version 5.0 (clang-500.1.74) (based on LLVM 3.3svn)
Run Code Online (Sandbox Code Playgroud)

更新:与Xcode 4.6.3相同的行为.

c++ virtual hidden warnings overloading

65
推荐指数
4
解决办法
4万
查看次数

选择性地删除警告消息GCC

这段代码:

Int32 status;
printf("status : %x", status)
Run Code Online (Sandbox Code Playgroud)

给我以下警告:

jpegthread.c:157: warning: format '%x' expects type 'unsigned int', but argument 3 has type 'Int32'
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过转换类型来摆脱它,但是有可能使用GCC编译器标志来摆脱那种特殊类型的警告,并仍然使用-Wall

gcc warnings

37
推荐指数
4
解决办法
7万
查看次数

标签 统计

warnings ×2

c++ ×1

gcc ×1

hidden ×1

overloading ×1

virtual ×1