Есть базовый класс
class T {
private:
public:
T() {}
std::string getId() { return id; }
virtual std::string getStr() {}
virtual std::string showBin() {}
virtual T* operator+(T *b) {}
~T() {}
};
И 2 класса которые наследуют базовый класс
сlass SumbString : public T
{
public:
SumbString(std::string init) {
initId();
setStr(init);
}
T* operator+(T *b) override {
return new SumbString(str + b->showBin());
}
std::string getStr() override{
return str;
}
};
и
class BinString : public T
{
public:
BinString(std::string init) {
initId();
if (!checkBin(init)) {
throw "Error. String not convert to bin";
}
setStr(init);
}
T* operator+(T *b) override {
if (!checkBin(b->getStr())) {
throw "Error. String not convert to bin";
}
std::string newStr = sum(str, b->getStr());
return new BinString(newStr);
}
std::string showBin() override {
return str;
}
};
Пытаюсь сделать вот так
T *str = new SumbString(in);
T *bin = new BinString(in);
T* strBin = str + *bin;
T* binSrt = bin + *str;
И у меня ругается на + отсутствует оператор "+", соответствующий этим операнда
Вы в классах определяете оператор для ссылки и указателя. А передаете указатель и ссылку... Вот он и ругается.
Стоит написать
T* strBin = *str + bin;
T* binSrt = *bin + str;
как операторы сразу находятся :)
Но правильнее такие операторы делать не членами классов, а свободными функциями.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
помогите разобраться , нужно написать программу решающее уравнение (a+b-c), но нужно сделать так чтобы если какое либо поле было не заполнено...
Вчера в задание надо было создать массив который выводил бы данные в обратном порядкеСделал не массив а String str1 = " Football "; // Обьявляем строку...
В классе, для которого пишу тест, есть переменная:
Сделал на томкате скрипт что, если с браузера зайти на http://localhost:8080/helloservlet/hello, то мне в вк отправится hello в личные сообщенияКак сделать запрос...