我跟我的团队将再次编译器警告开启。有的所有警告(-w)如何被禁用(不要问...)。他们中的大多数是显而易见的,但其中有一个是真的很烦。我把它从在很多地方使用我的日期和时间类。故事是非常简单的。时间是日期的子类,它们都有自己的运营商定义的。有什么可以错吗?下面是我得到的警告:

Warning: ACTime::operator- hides the function ACDate::operator-(const ACDate&) const.

也许有人可以链接我的文档描述了每个SunStudio C ++编译器警告的意思吗?我无法找到这个...谢谢!

有帮助吗?

解决方案

我可以帮你用特定的警告 - 它看起来很像这个从的 C ++ FAQ精简版。你有没有偶然改变的论点,即ACTime ::操作符 - 从一个在ACDate使用类型?

其他提示

我与SunStudio编译器之前看到这一点。基本上,你有一个构建体是这样的:

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

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

由于C ++范围规则,ACTime ::操作符 - 隐藏ACDate ::操作符 - 在ACTime对象的上下文。这是非常正常的,但SunStudio编译器警告关于这个问题,因为它可能是一个缺少“虚拟”限定符的标志。

对于这种情况的一个解决方法将是一个明确的ACTime的类声明“使用ACDate ::操作符 - ”,但是这可能不是你想要的。

另外,您的情况可能更好的解决办法是让操作符 - 免费的朋友的功能,但可能会导致其他有趣的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top