Dziedziczenie klas i błąd "expected class name before { token"

Odpowiedz Nowy wątek
2015-01-02 15:38
0

Hej mam problem z dziedziczeniem gdy chce aby moja klasa pochodna byla Karta a klasa bazowa Komputer to wyskakuje mi blad expected class name before { token . Mozecie powiedziec mi co jest przyczyna bledu ?

#ifndef KARTA_H
#define KARTA_H
#include <iostream>
#include <cstdio>
#include <cstring>
#include "komputer.h"
#include "Procesor.h"
 
using namespace std;
class Karta:public Komputer
{
public:
    Karta();
    ~Karta();
    // friend ostream & operator<< (ostream &stream, const Karta &s);
    void infokarta();
    Karta(const Karta &o);
    Karta& operator=(const Karta &p);
    Karta(string nazwa, int pamiec);
    void setNazwa(string nazwa);
private:
    string nazwa = "Nvidia";
    int pamiec = 1000;
};
 
#endif // KARTA_H
 
Ostatni raz przypominam o sensownym tytułowaniu wątków - następnym razem będzie Kosz; - furious programming 2015-01-02 15:56

Pozostało 580 znaków

2015-01-02 15:42
1

Słyszałem aby część była rozwinięciem całości, konkretnie głowa - rozwinięciem człowieka, ale tylko w jednym przypadku - Twarz Bo w seriale Doktor Who.
W pozostałych przypadkach to kompletne WTF


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-02 15:52
1

A od kiedy Karta Graficzna jest szczególnym przypadkiem Komputera? o_O Ja zawsze myślałem że komputer składa się między innymi z karty graficznej, no ale człowiek uczy się całe życie...


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2015-01-02 15:53
0

Kompilatory C++ analizują sensowność dziedziczenia?


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2015-01-02 15:57
0

Niestety nie :( Autor zwyczajnie zrobił literówkę w include albo strażnik naglówka mu wyciął klasę Komputer, więc brakuje mu deklaracji zapowiadającej

class Komputer;

przed tą jego chorą klasą ;]


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2015-01-02 23:14
0

Panowie na zajeciach powiedzieli mi wykladowcy ze moimi klasami pochodnymi klasami moze byc karta graficzna i procesor sami to zaproponowali. Probowalam na rozne sposoby dziedziczyc ale ciagle wyskakuje blad klasa nazywa sie Komputer a plik jest dobry komputer.h z malej nie ma literowki. Prosze o pomoc :)

Pozostało 580 znaków

2015-01-02 23:23
0

Owszem KartaGraficzna oraz Procesor mogą być klasami pochodnym ale pochodzącymi od Podzespola nie od Komputer.
Kompilator się burzy ponieważ zrobiłeś Buty pochodzące od Studenta, czyli swoiste StudentoButy i teraz inny student próbuje te StudentoButy wzuć ale mu to nie za bardzo wychodzi ponieważ w tamtych butach już jest student przecież to nie zwykłe buty zaś StudentoButy.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-02 23:28
1

To cię okłamali, bo to jest bardzo głupi pomysł dziedziczenia i tyle. Karta graficzna NIE JEST komputerem i już. Komputer wygląda tak:

class Komputer{
    private:
        Ram ram;
        KartaGraficzna kartaGraficzna;
        Procesor procesor;
};

I żadnej hierarchii dziedziczenia tu nie ma. Inną sprawą jest że możesz mieć np.

class ProcesorCzteroRdzeniowy: public Procesor{
//
};
 
class ProcesorDwurdzeniowy: public Procesor{
//
};

Albo

class DDRRam: public Ram{
//
};
 
class SDRam: public Ram{
//
};

Ale to co jest w 1 poście to bzdura i tyle.


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.
Według mnie to co podałeś w przykładach też nie powinno być rozwiązywane dziedziczeniem. - Sopelek 2015-01-02 23:35
Mało co w rzeczywistości powinno być rozwiązywane dziedziczeniem ;) Zawsze można wepchnąc dekorator zamiast tego. Ale chodzi tu o ideę. Zresztą C++ nie ma interfejsów a w przypadku który podałem Ram i Procesor byłyby właśnie interfejsami ;) - Shalom 2015-01-02 23:38
@Shalom w C++ nie robi się interfejsów np. tak class IRam {public: virtual ~IRam(){} virtual int getMBPS()=0; }; ? - karolinaa 2015-01-03 12:15
Za dodawanie I albo C do nazw klas powinni zabijać :P C++ nie ma interfejsów jako takich, ale tak, można je "udawać" między innymi w zaprezentowany sposób. - Shalom 2015-01-03 12:16

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0