• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wzajemne zaprzyjaźnienie dwóch klas ze sobą

Object Storage Arubacloud
0 głosów
382 wizyt
pytanie zadane 13 czerwca 2017 w C i C++ przez Szahid Pasjonat (20,930 p.)

Witam. Chcę zaprzyjaźnić wzejemnie ze sobą 2 klasy jednak nie za bardzo mi to wyszło. Czy mógłby ktoś sprawdzić czy wszystko zadeklarowałem w odpowiedniej koleiności bo pierwszy raz robie coś takiego.

Ponad to wyrzuca mi błędy 

14 linijka pliku.h expected class name before '(' token

14 linijka pliku.h expected '{' before '(' token 

i jescze 46 linijka pliku.h  two or more datatypes in declaration set_mode

 

#ifndef TV_H
#define TV_H
class Tv;
class Remote
{
private :
    friend class Tv;
    int mode;
    int tryb;
public:
    enum {Zwykly,Interaktywny};
    enum {TV,DVD};

        Remote(int m=TV,int t=Interaktywny): Remote::mode(m),Remote::tryb(t){}
        bool volup(Tv& t);
        bool voldown(Tv& t);
        void onoff(Tv& t);
        void chanup(Tv& t);
        void chandown(Tv& t);
        void set_chan(Tv&t,int c);
        void set_mode(Tv& t);
        void set_input(Tv&t);
        void show();
};

class Tv
{

   friend class Remote;
  public:

    enum{Off,On};
    enum{MinVal,MaxVal=20};
    enum{Antenna,Cable}; //przez 2n
    enum {TV,DVD};

    Tv (int s=Off,int mc=125):state(s),volume(5),maxchannel(mc),channel(2),mode(Cable),input(TV){}
    void onoff(){state=(state==On) ? Off:On;}
    bool ison(){return state==On;}
    bool volup();
    bool voldown();
    void chanup();
    void chandown();class Remote


    void set_mode(){Tv::mode=(Tv::mode==Antenna)? Cable:Antenna;}
    void set_input(){input=(input==TV) ? DVD:TV;}
    void settings() const;
    void change(Remote& r);  // zmienia atrybut klasy Remote

  private:
    int state;
    int volume;
    int maxchannel;
    int channel;
    int mode;
    int input;


};













#endif // TV_H
#include"TV.h"
#include<iostream>

using std::cin;
using std::cout;
using std::endl;


bool Tv::volup()
{
    if (volume==MaxVal)
        return false;
    else {volume++; return true;}
}

bool Tv::voldown()
{
   if (volume==MinVal)
        return false;
    else {volume--; return true;}

}


void Tv::chanup()
{
    if (channel==maxchannel)
        channel=1;
    else{channel++;}

}


void Tv::chandown()
{
    if (channel==1)
        channel=maxchannel;
    else{channel--;}
}

void Tv::settings() const
{
    cout<<"Telewizor jest "<<(state==Off? "OFF":"ONN")<<endl;
    if(state==On)
    {
        cout<<"Glosnosc "<<volume<<endl;
        cout<<"Program "<<channel<<endl;
        cout<<"Mode "<<(mode==Antenna ? "Antena":"Kabel")<<endl;
        cout<<"Wejscie "<<(input==TV ? "TV":"DVD")<<endl;

    }
}
void Tv::change(Remote& r)
{
    r.tryb=(r.tryb==Interaktywny? Zwykly:Interaktywny ;)
}




bool Remote::volup(Tv& t)
{return t.volup();}

bool Remote::voldown(Tv& t)
{return t.voldown();}

void Remote::onoff(Tv& t)
{t.onoff();}



void Remote::chanup(Tv& t)
{t.chanup();}

void Remote::chandown(Tv& t)
{t.chandown();}

void Remote::set_chan(Tv&t,int c)
{t.channel=c;}


void Remote::set_mode(Tv& t)
{t.set_mode();}

void Remote::set_input(Tv&t)
{t.set_input();}
void Remote::show()
{
    cout<<"Tryb "<<(tryb==Interaktywny ? "Interaktywny":"Zwykly")<<endl;
}





 

1 odpowiedź

+1 głos
odpowiedź 13 czerwca 2017 przez niezalogowany
edycja 30 sierpnia 2017
 
Najlepsza

1. Usuń zasięg:

Remote(int m=TV,int t=Interaktywny): Remote::mode(m),Remote::tryb(t){}
Remote(int m=TV,int t=Interaktywny): mode(m),tryb(t){}

2. Jakiś niepotrzebny kod po definicji metody:

void chandown();class Remote // usuń class Remote

3. Uwzględnij w której klasie znajduje się enum (klasa TV nie wie gdzie ma go szukać) i przestaw średnik:

void Tv::change(Remote& r)
{
    r.tryb=(r.tryb==Interaktywny? Zwykly:Interaktywny ;)
}

void Tv::change(Remote& r)
{
    r.tryb=(r.tryb==Remote::Interaktywny? Remote::Zwykly:Remote::Interaktywny);
}
komentarz 13 czerwca 2017 przez Szahid Pasjonat (20,930 p.)
Dziękuje za odpowiedź

Podobne pytania

0 głosów
1 odpowiedź 229 wizyt
pytanie zadane 28 kwietnia 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)
0 głosów
1 odpowiedź 210 wizyt
0 głosów
0 odpowiedzi 979 wizyt
pytanie zadane 4 czerwca 2019 w C# przez Magiqon Nowicjusz (160 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...