//Почему я не могу num1.compare(num2, num3); так сделать?
#include
using namespace std;
class Integer
{
//friend int compare(const Integer& obj, const Integer& obj2);
public:
Integer(int number)
{
value = number;
}
int compare(const Integer& obj, const Integer& obj2){ return obj.value - obj2.value; };
void print() const
{
std::cout
C/C++
Для констаных версий обьекта следует добавлять константные версии методов.
Классы, функции, объекты
int compare(const Integer& obj, const Integer& obj2) const //тут конст
{ return obj.value - obj2.value; };
Ругается что над константым обьектом num1 может быть произведено несанкционированное изменение не-константым методом compare.Для констаных версий обьекта следует добавлять константные версии методов.
#include
using namespace std;
struct Integer {
Integer() noexcept : value(0) {}
explicit Integer(const int value) noexcept : value(value) {}
operator int()const noexcept {
return value;
}
private:
int value;
friend istream& operator>>(istream& inp, Integer& i) {
return inp >> i.value;
}
friend ostream& operator
Вероятно, потому что у тебя value находится в private, и ты не можешь просто так обратиться к ней через точку в строке:
return obj.value - obj2.value
С ошибками компилятора было бы попроще разобраться
Гуванчмурад ...
Вовсе дело не в этом
не успел про const написать, опередили. А тебя не смущает, что для того, чтобы сравнить num 2 и num3 тебе приходится num1 использовать?
Гуванчмурад ...
У меня другой принцип выполнения, просто смутила ошибка при исправлении
Судя по всему, ты хочешь сравнить два числа.
В таком случае один аргумент в методе лишний. Помимо того, что требуется const. Ну и в целом, код конечно так себе, на мой непрофессиональный взгляд
В таком случае один аргумент в методе лишний. Помимо того, что требуется const. Ну и в целом, код конечно так себе, на мой непрофессиональный взгляд
#include
using namespace std;
class Integer
{
//friend int compare(const Integer& obj, const Integer& obj2);
public:
Integer(int number)
{
value = number;
}
int compare(const Integer& obj) const { return this->value - obj.value; };
void print() const
{
std::cout
Похожие вопросы
- Лабораторная работа. Классы. Передача объекта в качестве аргумента.
- Работа с классами и объектами
- Передача в метод класса указателя на функцию C++
- Функцию или оператор надо сделать для класса? Cи++
- В QtCreator для Qt 4.8 (и 5 может также), у класса формы главной, функция конструктор, делает не понятное наследование?
- Доработка класса. Создание массива объектов
- Програмирование с++,классы, дружественная функция
- Создать простой класс, конструктор, и несколько функций. Не могу решить задачу, плохо понял тему, помогите пожалуйста.
- Программирование на С++(Классы-объекты)
- Динамические массивы объектов класса. Нужна помощь.