Решил попробовать создать двоичный тип данных для вводимых чисел, а также функции конъюнктирования и дизъюнктирования к ним. Однако в какой-то момент что-то пошло не так.
#pragma once
#include <iostream>
#include <string>
#include <cmath>
#include <cassert>
struct Binary
{
private:
std::string value;
std::string to_binary(int number);
std::string con(std::string value, std::string value_1);
int to_int(std::string value);
public:
Binary(int value_) :
value(to_binary(value_))
{
//
}
Binary(Binary& type);
Binary& operator= (Binary& type) {
if (value == type.value) {
return *this;
}
value = type.value;
return *this;
}
Binary& operator+ (Binary& type){
return Binary(to_int(con(value, type.value)));
}
friend std::ostream& operator<< (std::ostream& out, Binary& type);
};
Ошибка C2440 return: невозможно преобразовать "Binary" в "Binary"
Обучение заколовкам C:\Users\User\source\repos\Обучение заколовкам\Binary.h 29
+
, и operator<<
должны получать свои Binary
параметры по константной ссылке.+
должен быть const
сам по себе. А лучше было бы реализовать его самостоятельной [friend] функцией, а не методом класса.+
должен возвращать свой результат по значению. Код на скриншоте в этом отношении не совпадает с кодом в тексте, т.е. видно, что вы метались туда-сюда, но но и там и там неправильно.if (value == type.value)
в операторе присваивания - бессмысленная трата времени и явная пессимизация. В данном случае проверка на самоприсваивание не нужна, но если вы хотите ее сделать, то это if (this == &type)
.Дело в том, что Ваш конструктор копирования обьявлен с параметром Binary&
, а operator+
возвращает обьект Binary
по значению и для этого ему нужен конструктор копирования. Но Binary(to_int(con(value, type.value)))
является rvalue, а не константная ссылка не может ссылаться на rvalue. Решение: обьявите конструктор копирования так:
Binary(const Binary& type);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть сервер TCP QTcpServer tcp и сокет подключения QTcpSocket socketПодключаю я их вот так:
Подскажите пожалуйста, как вызывать после окна авторизации окно с основным функционалом(дочернее окно), при этом нужно использовать mvvm паттерн