首页 > 解决方案 > 该对象具有与成员函数“SimpleCircle::GetRadius”不兼容的类型限定符

问题描述

  1. 我使用 const 方法 GetRadius 和 const SimpleCircle & rhs。在 Jesse Liberty 的书的示例中,我使用 const objectas 调用 const 方法。
  2. 警告 C26444 避免使用自定义构造和销毁的未命名对象

我不明白问题出在哪里。

class SimpleCircle {
public:
    SimpleCircle(); 
    SimpleCircle(int);
    SimpleCircle(const SimpleCircle&);
    ~SimpleCircle();
    void SetRadius(int);
    const int GetRadius();
    const SimpleCircle& operator++();
    const SimpleCircle operator++(int);
    const SimpleCircle& operator=(SimpleCircle&);

private:
    int* itsRadius;
};
SimpleCircle::SimpleCircle(const SimpleCircle & rhs)
{
    int temp = rhs.GetRadius();
    itsRadius = new int(temp);
}
const int SimpleCircle::GetRadius()
{
    return *itsRadius;
}
const SimpleCircle& SimpleCircle::operator++() 
{
    ++(*itsRadius);
    return *this;
}

const SimpleCircle SimpleCircle::operator++(int theFlag)
{
    SimpleCircle temp(*this);
    ++(*itsRadius);
    return temp;
}
int main()
{
    SimpleCircle Circle1;
    SimpleCircle Circle2(9);
    cout << "Circle1=" << Circle1.GetRadius() << endl << "Circle2=" << Circle2.GetRadius()<<endl;
    ++Circle1;
    Circle2++; //here is the warning, it`s done like ++Circle2
    cout << "After ++Circle1=" << Circle1.GetRadius() << endl << "++Circle2=" << Circle2.GetRadius() << endl;
}

标签: c++

解决方案


推荐阅读