Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=7047995&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 08:28:23 2016
Кодировка: Windows-1251
C++ и Visual Studio - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
tserber
journeyman

Рег.: 18.10.2007
Сообщений: 90
Рейтинг: -31
  C++ и Visual Studio
      02.01.2008 00:47
 


   Почему в Visual Studio нельзя объявлять несколько раз операторы? Например, пишу
code:
namespace MyComplex { public class Complex { bool operator==(Complex c1, Complex c2); }; Complex::operator==(Complex c1, Complex c2) { //...// } }


после чего получаю какую-то ошибку (в том духе, что дескать уже объявлен такой оператор (но я же его объявил, но определил-то один раз только)). Кроме того, компилятор пишет, что аргументов слишком много, хотя пишу все так же, как и в Штрауструпе.

  А еще - те операторы, которые все-таки удалось написать без ошибок, Visual Studio "не воспринимает", т.е. - воспринимает

 
code:
cp1->operator >(cp2)

 
но не воспринимает
 
code:
cp1 >cp2

  
Где искать подвох?

solver85

Рег.: 30.01.2007
Сообщений: 182
Рейтинг: 199
  Re: C++ и Visual Studio [re: tserber]
      02.01.2008 00:49
 

>public class Complex
это новое слово в С++?

и это тоже:
>Complex::operator==(Complex c1, Complex c2)

он же раньше булом уже объявлен

tserber
journeyman

Рег.: 18.10.2007
Сообщений: 90
Рейтинг: -31
  Re: C++ и Visual Studio [re: solver85]
      02.01.2008 01:02
 

Quote:

>public class Complex
это новое слово в С++?




  Это о чем вы?

Quote:


и это тоже:
>Complex::operator==(Complex c1, Complex c2)

он же раньше булом уже объявлен




Ну это я сплоховал, не дописал bool, но ошибку все равно выдает.

tserber
journeyman

Рег.: 18.10.2007
Сообщений: 90
Рейтинг: -31
  Re: C++ и Visual Studio [re: tserber]
      02.01.2008 01:05
 

И что тогда лучше всего установить, чтобы все коды, переписанные из Штрауструпа, нормально копмпилились, а то уже не в первой у разных копмиляторов разные глюки.


vozbu
karamba

Рег.: 14.11.2004
Сообщений: 4856
Рейтинг: 1057
  Re: C++ и Visual Studio [re: tserber]
      02.01.2008 01:15
 

Судя по сообщениям - только прямые руки. А, ну еще свежую голову, чтобы без ошибок переписывать примеры из Страуструпа. Думаю, он не мог написать "public class Complex".



С тех пор, как изобрели речь, люди не могут договориться друг с другом.
Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  Re: C++ и Visual Studio [re: tserber]
      02.01.2008 01:29
1

Quote:

Кроме того, компилятор пишет, что аргументов слишком много, хотя пишу все так же, как и в Штрауструпе.



А что, Страуструп уже написал книгу по Managed C++? Это я про объявление "public class Complex". Аргументов у оператора слишком много, и мне слабо верится, что в твоей книге именно так и написано. :crazy: Попробуй написать вот так:
code:
class Complex { public: friend bool operator==(const Complex& c1, const Complex& c2); }; inline bool operator==(const Complex& c1, const Complex& c2) { return false; }

 
Quote:

А еще - те операторы, которые все-таки удалось написать без ошибок, Visual Studio "не воспринимает", т.е. - воспринимает



Это все потому, что ты сравниваешь не классы, а указатели.

yegor
old hand

Рег.: 17.05.2006
Сообщений: 876
Рейтинг: 815
  Re: C++ и Visual Studio [re: tserber]
      02.01.2008 14:44
 

g++




Пользователю все равно, в какой системе не разбираться.
tserber
journeyman

Рег.: 18.10.2007
Сообщений: 90
Рейтинг: -31
  Re: C++ и Visual Studio [re: Mike]
      02.01.2008 15:23
 

Спасибо, понял, все наладилось, кажись! :D

eyescream
nächste Riff

Рег.: 20.02.2005
Сообщений: 426
Рейтинг: 392
  Re: C++ и Visual Studio [re: tserber]
      02.01.2008 22:22
 

Раз уж начал писать прямо в объявлении, там бы и писал, метод-то простой. Только аргумент у такого оператора должен быть один - Complex that (или const Complex &that, что будет правильнее), поскольку this у тебя и так есть.

Итого:
code:
class Complex { private: double re, im; public: bool operator==(const Complex &that) const { return (im == that.im) && (re == that.re); } };




Current Mortal Sin: гордыня.
Current Wise Thought: was ist wenn der Vorhang fällt?
eyescream
nächste Riff

Рег.: 20.02.2005
Сообщений: 426
Рейтинг: 392
  Re: C++ и Visual Studio [re: eyescream]
      02.01.2008 22:24
 

Да и ваще, гугл как всегда всех умнее и милее.

http://yanivhamo.com/material/example_of_complex.pdf



Current Mortal Sin: гордыня.
Current Wise Thought: was ist wenn der Vorhang fällt?
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в