[SOLVED] wskaźnik i missing ';' before '*'

0

Witam,

piszę bibliotekę dll z gniazdami. Mam metodę klasy która ma zwracać wskaźnik do innej klasy (ta inna klasa oczywiście jest tworzona w tej metodzie). Klasa w której jest metoda jest klasą zaprzyjaźnioną do "innej" klasy. Ale gdy chce skompilować to wywołuje błąd. Ale gdy nie używam pointera to jest ok. Albo gdy za pointera do klasy dam void * to działa. Oto kody. Proszę o pomoc...

Metoda:

CTCPSocket * accept(void) throw(CSocketException);

Definicja:

CTCPSocket * CTCPServerSocket::accept(void) throw(CSocketException) {
	SOCKET newConnSD;
	if( (newConnSD = ::accept(this->sockDesc,NULL,0)) < 0 ) {
		throw CSocketException("Akceptowanie połączeń zawiodło (accept())",true);
	}

	return new CTCPSocket(newConnSD);
}
class  CTCPSocket : public CComSocket {
public:
	CTCPSocket(void) throw(CSocketException);

	CTCPSocket(const std::string &foreignAddress, unsigned short foreginPort) throw(CSocketException);

private:
	friend class CTCPServerSocket;
	CTCPSocket(SOCKET newConnSD);
};

Output:

Output Window      Compiling...
CComSocket.cpp
CSocket.cpp
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C2143: syntax error : missing ';' before '*'
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : warning C4183: 'accept': missing return type; assumed to be a member function returning 'int'
CSocketException.cpp
CTCPServerSocket.cpp
CTCPSocket.cpp
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C2143: syntax error : missing ';' before '*'
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : warning C4183: 'accept': missing return type; assumed to be a member function returning 'int'
CUDPSocket.cpp
Sockets.cpp
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C2143: syntax error : missing ';' before '*'
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\moje dokumenty\moje projekty\visual c++\podstawy informatyki\projekt zaliczeniowy\remote tutor\sockets\ctcpserversocket.h(48) : warning C4183: 'accept': missing return type; assumed to be a member function returning 'int'
Utils.cpp
Generating Code... 

Dzięki.

0

jak na razie wyglada jak zwykly ciag bledow spowodowany zapomnieniem #include "naglowek-klasy.h"

pokaz linijke "remote tutor\sockets\ctcpserversocket.h(48)"

0

To jest to: CTCPSocket * accept(void) throw(CSocketException); rozwiązałem temat, metodą tą co podałem w poście wyżej. Ale dręczy mnie nadal pytanie dlaczego tak jest...

0

wiec podtrzymuje uwage. wszystko wskazuje ze zapomniales o declaration lub forwarddeclaration clasy CTCPSocket przed jej uzyciem w tej linijce. albo #include'uj jej naglowek przed deklaracja klasy CTCPServerSocket, albo (jesli sa zdefiniowane w tym samym pliku) przenies jej deklaracje ponad te klase, albo (jesli ani tego ani tego nie mozesz zrobic) umiesc przed deklaracja klasy CTCPServerSocket forwarddeclaration klasy CTCPSocket..

Twoj blad polega na tym, ze kompilator podczas przetwarzania tego pliku, trafiajac na tę konkretna linijke, jeszcze nie zna nazwy (symbolu) CTCPSocket i nie wie co z tym fantem zrobic no i w efekcie wyrzuca blad parsowania linii (stad tekst missing ; before * -- przed pierwszym znanym symbolem (czyli gwiazdka), domaga sie zakonczenia poprzedniej linii (czyli srednika) ).

0
quetzalcoatl napisał(a)

umiesc przed deklaracja klasy CTCPServerSocket forwarddeclaration klasy CTCPSocket..

Twoj blad polega na tym, ze kompilator podczas przetwarzania tego pliku, trafiajac na tę konkretna linijke, jeszcze nie zna nazwy (symbolu) CTCPSocket i nie wie co z tym fantem zrobic no i w efekcie wyrzuca blad parsowania linii (stad tekst missing ; before * -- przed pierwszym znanym symbolem (czyli gwiazdka), domaga sie zakonczenia poprzedniej linii (czyli srednika) ).

Masz rację quetzalcoatl zrobiłem tak jak mówisz i teraz wszystko śmiga! Choć nie wiem dlaczego był ten błąd, plik z deklaracją CTCPSocket jest wcześniej przetwarzany. No ale ważne, że działa. Dzięki.

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