C++ и Visual Studio
это новое слово в С++?
и это тоже:
>Complex::operator==(Complex c1, Complex c2)
он же раньше булом уже объявлен
>public class ComplexЭто о чем вы?
это новое слово в С++?
и это тоже:Ну это я сплоховал, не дописал bool, но ошибку все равно выдает.
>Complex::operator==(Complex c1, Complex c2)
он же раньше булом уже объявлен
И что тогда лучше всего установить, чтобы все коды, переписанные из Штрауструпа, нормально копмпилились, а то уже не в первой у разных копмиляторов разные глюки.
Судя по сообщениям - только прямые руки. А, ну еще свежую голову, чтобы без ошибок переписывать примеры из Страуструпа. Думаю, он не мог написать "public class Complex".
Кроме того, компилятор пишет, что аргументов слишком много, хотя пишу все так же, как и в Штрауструпе.А что, Страуструп уже написал книгу по Managed C++? Это я про объявление "public class Complex". Аргументов у оператора слишком много, и мне слабо верится, что в твоей книге именно так и написано. Попробуй написать вот так:
class Complex
{
public:
friend bool operator==(const Complex& c1, const Complex& c2);
};
inline bool operator==(const Complex& c1, const Complex& c2)
{
return false;
}
А еще - те операторы, которые все-таки удалось написать без ошибок, Visual Studio "не воспринимает", т.е. - воспринимает
Это всё потому, что ты сравниваешь не классы, а указатели.
g++
Спасибо, понял, все наладилось, кажись!
Итого:
class Complex
{
private:
double re, im;
public:
bool operator==(const Complex &that) const
{
return (im == that.im) && (re == that.re);
}
};
Оставить комментарий
Retor
Почему в Visual Studio нельзя объявлять несколько раз операторы? Например, пишупосле чего получаю какую-то ошибку (в том духе, что дескать уже объявлен такой оператор (но я же его объявил, но определил-то один раз только. Кроме того, компилятор пишет, что аргументов слишком много, хотя пишу все так же, как и в Штрауструпе.
А еще - те операторы, которые все-таки удалось написать без ошибок, Visual Studio "не воспринимает", т.е. - воспринимает
но не воспринимает
Где искать подвох?