Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

В чем ошибка в коде C++

Антон Папченко Профи (679), закрыт 12 лет назад
#include <stdio.h>
#include<iostream>

using namespace std;

class SimpleCircle
{
public:
SimpleCircle();
SimpleCircle(int);
SimpleCircle(const SimpleCircle&);
~SimpleCircle();
const SimpleCircle& operator ++();
const SimpleCircle operator ++(int);
SimpleCircle& operator = (const SimpleCircle& rhs);
void SetRadius(int);
int GetRadius();
private:
int* itsRadius;
};

SimpleCircle::SimpleCircle()
{
itsRadius = new int(5);
}

SimpleCircle::SimpleCircle(int radius)
{
itsRadius = new int(radius);
}

SimpleCircle::SimpleCircle(const SimpleCircle& rhs)
{
int val = rhs.GetRadius();
itsRadius = new int(val);
}

const SimpleCircle& SimpleCircle::operator ++()
{
++(*itsRadius);
return *this;
}

const SimpleCircle SimpleCircle::operator ++(int)
{
SimpleCircle temp(*this);
++(*itsRadius);
return temp;
}

SimpleCircle& SimpleCircle::operator = (const SimpleCircle& rhs)
{
*itsRadius = *(rhs.itsRadius);
return *this;
}

int SimpleCircle::GetRadius()
{
return *itsRadius;
}

void SimpleCircle::SetRadius(int val)
{
*itsRadius=val;
}

int main()
{
SimpleCircle c1;
SimpleCircle c2(9);
c1++;
c2++;
cout << "c1: " << c1.GetRadius() << "\nc2: " << c2.GetRadius();
c1=c2;
cout << endl;
cout << "c1: " << c1.GetRadius() << "\nc2: " << c2.GetRadius();
return 0;
}

1>------Построение начато: проект: program_c++, Конфигурация: Debug Win32 ------
1> project_c.cpp
error C2662: SimpleCircle::GetRadius: невозможно преобразовать указатель "this" из "const SimpleCircle" в "SimpleCircle &"
1> В результате преобразования теряются квалификаторы
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Лучший ответ
Николай Веселуха Высший разум (360748) 12 лет назад
Ошибка связана с тем, что вы пытаетесь вызвать не константный метод в константном объекте. Сделайте метод константным и вам будет счастье.
Юрий-17Гений (76476) 12 лет назад
и ещё деструктор надо будет ему как-то описать!
SimpleCircle::SimpleCircle(const SimpleCircle& rhs) {   itsRadius = new int(*(rhs.itsRadius)); } SimpleCircle::~SimpleCircle() {   delete itsRadius; } Как то так, наверно?
Остальные ответы
Похожие вопросы