C++ и Visual Studio
>public class Complex
это новое слово в С++?
и это тоже:
>Complex::operator==(Complex c1, Complex c2)
он же раньше булом уже объявлен
это новое слово в С++?
и это тоже:
>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++
Спасибо, понял, все наладилось, кажись! 

Раз уж начал писать прямо в объявлении, там бы и писал, метод-то простой. Только аргумент у такого оператора должен быть один — Complex that (или const Complex &that, что будет правильнее поскольку this у тебя и так есть.
Итого:
Итого:
class Complex
{
private:
double re, im;
public:
bool operator==(const Complex &that) const
{
return (im == that.im) && (re == that.re);
}
};
Да и ваще, гугл как всегда всех умнее и милее.
http://yanivhamo.com/material/example_of_complex.pdf
http://yanivhamo.com/material/example_of_complex.pdf
Оставить комментарий
Retor
Почему в Visual Studio нельзя объявлять несколько раз операторы? Например, пишупосле чего получаю какую-то ошибку (в том духе, что дескать уже объявлен такой оператор (но я же его объявил, но определил-то один раз только. Кроме того, компилятор пишет, что аргументов слишком много, хотя пишу все так же, как и в Штрауструпе.
А еще - те операторы, которые все-таки удалось написать без ошибок, Visual Studio "не воспринимает", т.е. - воспринимает
но не воспринимает
Где искать подвох?