PelzaK Opublikowano 3 Kwietnia 2006 Zgłoś Opublikowano 3 Kwietnia 2006 (edytowane) witam... Czy może mi ktoś pomóc bo już mnie powoli trafia... Wszystko pod Borlandem C++ Builderem 6 Problem wygląda następująco... plik game.h wygląda tak: class cManage // klasa bazowa dla wyświetlania logów i przechowywania ustawień{protected: sSettings *settings; // ustawienia gry TMemo *logMemo; // memo do logowaniapublic: cManage() {}; ~cManage() {}; void SetSettings(sSettings* settings_) {settings=settings_;}; void SetLogMemo(TMemo* memo_) {logMemo=memo_;}; void Log(AnsiString text){logMemo->Lines->Add(text);};};//------------------------------------------------------------class cGame : public cManage{... }; W powyższym pliku dziedziczenie działa dobrze. Teraz mam inny plik, bot.h, i w nim podobnie... [C++ Error] bot.h(27) _linenums:0'>class cManage; // jeśli tego nie dam pojawia się bład [C++ Error] bot.h(27): E2303 Type name expectedclass cBot : public cManage{ // linia 27- tu pojawia się błądprivate: int botMode;public: cBot(int botMode_,TMemo* logMemo_); sMove WhatMove(int playerMove,int boardState[64],cBoard *board);};jeśli próbuję skompilować taki kod pojawia się następujacy error i już naprawdę nie wiem o co mu chodzi... [C++ Error] bot.h(27): E2029 'cManage' must be a previously defined class or struct. Czyli czepia się tego że klasa cManage musi być uprzednio zdefiniowana... ale jest zdefiniowana w pliku game.h dołączonym do pliku bot.h w którym jest problem... Jeśli do pliku bot.h dodam definicję klasy cManage to wywala z kolei błąd zduplikowanej definicji... Jakaś paranoja? Czy brakuje gdzieś jednej linijki.. jak zwykle...? Edytowane 3 Kwietnia 2006 przez PelzaK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 3 Kwietnia 2006 Zgłoś Opublikowano 3 Kwietnia 2006 ok, problem wygląda na rozwiązany z pomocą osób trzecich :) Z pewnych wzgledów zainkludowałem dwustronnie powyższe pliki jeden do drugiego... Wyglada na to że obustronne inkludowanie było przyczyną tego błędu... Można zamknąć :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 6 Kwietnia 2006 Zgłoś Opublikowano 6 Kwietnia 2006 Obustronne łącznie plików to dość poważny błąd tak jak zamykanie łańcucha wymiarowego w rysunku technicznym czy łącznie wszystkich tabel w bazie relacjami wiele do wielu... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 6 Kwietnia 2006 Zgłoś Opublikowano 6 Kwietnia 2006 jak mówię.. był to wynik niedopatrzenia.. bo kilka klas, kilka plików źródłowych no i w trakcie walki z czymś_tam zainkludowałem bo miałem nagłą potrzebę :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 15 Kwietnia 2006 Zgłoś Opublikowano 15 Kwietnia 2006 uzywaj #ifndef bla#define bla#endifto pomaga Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 16 Kwietnia 2006 Zgłoś Opublikowano 16 Kwietnia 2006 nie w tym przypadku :wink: używam... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...