首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告和SunStudio C++编译器

警告和SunStudio C++编译器
EN

Stack Overflow用户
提问于 2009-01-21 20:24:31
回答 2查看 789关注 0票数 0

我说服我的团队再次打开编译器警告。一些所有警告(-w)是如何被禁用的(不要问...)。它们中的大多数都是显而易见的,但其中有一个是非常恼人的。我从我的date和time类中得到了它,这些类在很多地方都被使用过。故事真的很简单。Time是Date的子类,它们都定义了自己的运算符。这有什么错呢?下面是我得到的警告:

代码语言:javascript
复制
Warning: ACTime::operator- hides the function ACDate::operator-(const ACDate&) const.

也许有人可以链接到描述每个SunStudio C++编译器警告的文档?我找不到这个。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-21 20:35:16

我可以帮你解决这个特殊的警告--它看起来很像C++ FAQ Lite中的这个。您是否无意中更改了ACTime::operator使用的参数类型,而不是ACDate中的类型?

票数 1
EN

Stack Overflow用户

发布于 2009-01-21 20:45:04

我以前在SunStudio编译器中见过这种情况。基本上,你有一个像这样的结构:

代码语言:javascript
复制
class ACDate
{
   public:
     ACDate &operator-(const ACDate &);
};

class ACTime : public ACDate
{
    public:
    ACTime &operator-(const ACTime &);
};

由于C++作用域规则,ACTime::operator-在ACTime对象的上下文中隐藏ACDate::operator-。这很正常,但SunStudio编译器会对此问题发出警告,因为这可能是缺少“虚拟”限定符的迹象。

这种情况的一种解决方法是在ACTime的类声明中显式地使用“using ACDate::operator-”,但这可能不是您想要的。

对于您的情况,另一个可能更好的解决方法是使操作符成为一个免费的朋友函数,但这可能会导致其他有趣的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/466827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档