C2660:函数不带0个参数

时间:2017-09-15 17:10:48

标签: c++

在VS2017中我得到错误C2660。有很多相关的帖子,但是 我发现没有可与我相提并论的案例。

情况:A类为_mem实现了getter / setter。 setter是虚拟的并且在B中被覆盖。在B函数“set”中我调用getter,它只在A中声明并且是void。这是一件非常独特的事情。为什么即使获得c2660? 我不明白,对不起。

(只需要setter - 它需要一个参数值 - 覆盖并保持不带任何参数的getter。)

class A
{
public:
    A(int x)
    {
        _mem=x;
    }
    inline int mem(void) const {return _mem;}
    virtual  bool mem (int x) {  _mem=x; return true;}
protected:
    int _mem;
};

class B : public A
{
public:
    B (int x)   : A(x)
    {
    }
public:
    bool mem (int x) { _mem = x;return true; }

    void    set(const B& x)
    {
        x.mem(); // c2660
    }
};

0 个答案:

没有答案