Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

входна изходна система

Featured Replies

здравейте за много години на всички изкам да попитам например имам следната програма #include <iostream> using namespace std; class samp{ int a; public: friend iostream &operator<<(iostream &stream, samp ob); }; iostream &operator<<(iostream &stream, samp ob){ ob.a=10; stream<<ob.a; return stream; } int main(){ samp ob; cout<<ob; cout<<"\n"; return 0;} нали класа iostream наследява istream и остреам и би трябвало да има достъп до предефинирания оператор << защо по този начин не работи а като сменя типът на връщания резултат и аргумента да е от тип ostream работи например така; friend ostream &operator<<(ostream &stream, samp ob); ostream &operator<<(ostream &stream, samp ob); нали iostream наследява istream и ostream и трябва да има достъп до предефинирания оператор <<

Първо ни кажи, как очакваш компилатора да те пусне да подадеш на функция очакваща параметър обект от наследен клас, обект от базов клас??? ти дефинираш функция(оператор) очакваща параметри от тип iostream и samp. След това долу се опитваш да извикаш оператор който има параметри ostream и samp. Еми очевидно такъв няма и получаваш грешка. Конверсия от базов към наследен клас е забранена - сам можеш да се сетиш защо.

  • Автор

оки но бях чел че класовете които наследяват базовите класове имат достъп до предефинираните оператори на базовите класове защо тогава да не може да се достъпи предефинирания оператор << от iostream нали iostream е производен на istream и ostream

Опитвам се да ти обясня че проблемът ти не е че не можеш да достъпиш предефиниран оператор, а че нямаш такъв който да достъпиш. дефинирал си: iostream &operator<<(iostream &stream, samp ob) а търсиш xxxxxx operator<<(ostream &stream, samp ob)

Редактирано от flare (преглед на промените)

  • Автор

оки мерси изках да кажа че програмата работи по този начин #include <iostream> using namespace std; class samp{ int a; public: friend iostream &operator<<(ostream &stream, samp ob); }; iostream &operator<<(ostream &stream, samp ob){ ob.a=10; stream<<ob.a; return stream; } int main(){ samp ob; cout<<ob; cout<<"\n"; return 0;} а по този не #include <iostream> using namespace std; class samp{ int a; public: friend iostream &operator<<(iostream &stream, samp ob); }; iostream &operator<<(iostream &stream, samp ob){ ob.a=10; stream<<ob.a; return stream; } int main(){ samp ob; cout<<ob; cout<<"\n"; return 0;} любопитно ми е каква е разликата извинявам се обаркал съм #include <iostream> using namespace std; class samp{ int a; public: friend ostream &operator<<(ostream &stream, samp ob); }; ostream &operator<<(ostream &stream, samp ob){ ob.a=10; stream<<ob.a; return stream; } int main(){ samp ob; cout<<ob; cout<<"\n"; return 0;} работи така а така не #include <iostream> using namespace std; class samp{ int a; public: friend iostream &operator<<(iostream &stream, samp ob); }; iostream &operator<<(iostream &stream, samp ob){ ob.a=10; stream<<ob.a; return stream; } int main(){ samp ob; cout<<ob; cout<<"\n"; return 0;}

Е не, не мога да си представя, че толкова зле се изразявам. А аз си мислех, че точно това обяснявам... проблемът е тук: cout<<ob; cout е обект от клас ostream а ob обект от клас samp. така че, компилаторът търси предефиниран оператор който да приема параметри ostream и samp, или поне такъв който приема параметри до които може да се конвертират ostream и samp. Е такъв във втория пример НЯМА.

Редактирано от flare (преглед на промените)

Радвам се.

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.