Typy z klasy Rodzic

0

Mam klasy:

plik widok.h

#include "AbstractType.h"

class Type1View;

class Widok :
{
  public:
 enum Type { Type1, Type2 };
...
 void setStatusForCurrentView( AbstractType::Status status );
..
};

plik AbstractType.h

class Widok;

class AbstractType :
{
 public
 enum Status { Status1, Status2 };
 AbstractType( Widok::Type  typ );
 ..
};

plik Type1View.h

#include "AbstractType.h"
class Widok;

class Type1View:
{
 public
 Type1View() : public AbstractType
 ..
};

plik Type1View.cpp

#include "Widok.h"

 Type1View::Type1View() : AbstractType( Widok::Type1 )

Pytanie: Dlaczego w AbstractType nie jest widziany typ Widok::Type ( w Type1View jest widziany ) i jak zrobić by to działało tak jak powinno ?

0

po co dwa razy deklarujesz class Widok (w obu plikach .h)? nie znam zbyt dobrze cpp, ale jak na mój gust to przez to, że pierwszy Widok jest zadeklarowany nad AbstractType.

0

Ten typ nie jest widziany, bo klasa widok w pliku abstracttype.h jest tylko zadeklarowana i nie jest kompletna (wiadomo tylko, że taka klasa istnieje, nie wiadomo nic na temat, co ona w środku ma), a w klasie Type1View.cpp ta klasa jest już kompletna, bo inkludujesz widok.h i masz pełną definicję klasy. Najprościej byłoby zrezygnować trochę z obiektowości i po prostu przenieść Widok::Type na zewnątrz.

A swoją drogą, co to za ciekawa składnia, że po nazwie każdej klasy jest dwukropek i od razu {, albo to "public Type1View() : public AbstractType" ?</image>

0

skladnia jest po porstu bledna ;)

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