Mail.ru
Почта
Мой Мир
Одноклассники
ВКонтакте
Игры
Знакомства
Новости
Календарь
Облако
Заметки
Все проекты
Все проекты
выход
Регистрация
Вход
Категории
Все вопросы проекта
Компьютеры, Интернет
Темы для взрослых
Авто, Мото
Красота и Здоровье
Товары и Услуги
Бизнес, Финансы
Наука, Техника, Языки
Философия, Непознанное
Города и Страны
Образование
Фотография, Видеосъемка
Гороскопы, Магия, Гадания
Общество, Политика, СМИ
Юридическая консультация
Досуг, Развлечения
Путешествия, Туризм
Юмор
Еда, Кулинария
Работа, Карьера
О проектах Mail.ru
Животные, Растения
Семья, Дом, Дети
Другое
Знакомства, Любовь, Отношения
Спорт
Золотой фонд
Искусство и Культура
Стиль, Мода, Звезды
Полный список
Спросить
Лидеры
Поиск по вопросам
Ответы Mail.ru
Программирование
Android
C/C++
C#
iOS
Java
JavaScript
jQuery
SQL
Perl
PHP
Python
Веб-дизайн
Верстка, CSS, HTML, SVG
Системное администрирование
Другие языки и технологии
Вопросы - лидеры.
Проблема с оптимизацией AVX-512 кода (TASM)
1 ставка
Как называется профессия, где человек изобретает будущие приложения?
1 ставка
Как брать каждый раз следующее значение в BAS, с помощью элемента "Получить текст"?
1 ставка
Нужно сначала выбрать цель или начать учить язык?
1 ставка
Лидеры категории
Лена-пена
Искусственный Интеллект
М.И.
Искусственный Интеллект
Y.Nine
Искусственный Интеллект
•••
В чем ошибка в коде 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; } Как то так, наверно?
Остальные ответы
Похожие вопросы
#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 ==========