虚拟功能不能成为朋友

时间:2012-06-21 07:32:11

标签: c++

我希望为具有此功能的C类创建一个接口:

friend bool operator==(const C& a, const C& b);*

我希望为测试驱动目的创建一个C模拟器。

我尝试这样做:

class IC
{
    virtual friend bool operator==(const IC& a, const IC& b) = 0;
};

我该怎么办?

1 个答案:

答案 0 :(得分:0)

operator ==是二元运算符。要使它virtual,它必须是类成员。

class IC
{
    virtual bool operator==(const IC& b) = 0;
};

在这种情况下,==的第一个参数隐含this

您的声明是关于自由函数,而不是类成员。

编辑:正如评论中所建议的那样,你应该避免这种情况,而应该实现compare函数或类似功能。