Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Błąd kompilacji: "syntax error : identifier '(...)'"

Ostatnio zmodyfikowano 2011-07-28 23:04
Autor Wiadomość
diego997
Temat założony przez niniejszego użytkownika
Błąd kompilacji: "syntax error : identifier '(...)'"
» 2011-07-28 21:47:09
No nie rozumie czemu mi błąd wyskakuje wcześniej robiłem tak samo 100 razy i wszystko było dobrze:

mam funkcje z klasy Animacje ktora w argumencie ma obiekt klasy Wrog_A
C/C++
void Animacje::Animacje_Anime_A( Wrog_A & Wrog )

A błąd jest następujący:
1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.h(19) : error C2061: syntax error : identifier 'Wrog_A'
1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.h(19) : error C2061: syntax error : identifier 'Wrog_A'
1>Animacje.cpp
1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.h(19) : error C2061: syntax error : identifier 'Wrog_A'
1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.cpp(13) : error C2511: 'void Animacje::Animacje_Anime_A(Wrog_A &)' : overloaded member function not found in 'Animacje'
1>        c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\animacje.h(11) : see declaration of 'Animacje'
P-37462
Thud
» 2011-07-28 22:12:52
Pokaż lepiej cały kod sprawiający problem.
P-37463
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-28 22:19:21
To wyżej udało mi się zrobić ale pojawił się kolejny problem:

Mam taką klasę:
C/C++
class Wrog_A
    : public Animacje //jeżeli to dam w komentarz to działa jeżeli nie to wysakkuje poniższy błąd
{
public:
    //ciało klasy
   
};


1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\enemy_a.h(12) : error C2504: 'Animacje' : base class undefined
1>Generating Code...
1>Compiling...
1>main.cpp
1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\enemy_a.h(12) : error C2504: 'Animacje' : base class undefined
1>Generating Code...
1>Compiling...
1>Enemy_A.cpp
1>c:\documents and settings\maszyna\moje dokumenty\visual studio 2008\projects\warbladenew\warbladenew\enemy_a.h(12) : error C2504: 'Animacje' : base class undefined


Chyba powinienem gdzieś wstawić plik nagłówkowy tak mi się wydaje ale jak to zrobię to wyskakuje mi poprzedni błąd
P-37464
kamillo121
» 2011-07-28 22:29:00
Jeżeli składniowo jest wszystko poprawnie to może dołączasz kilkukrotnie ten sam nagłówek do innych ?
Zastosuj w nagłówku
C/C++
#ifndef ANIMATE_TEST
#define ANIMATE_TEST

//tresc naglowka

#endif

No i oczywiście dostarczaj deklarację klasy podstawowej tam gdzie jej używasz.
P-37465
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-28 22:34:21
C/C++
#ifndef ANIMATE_TEST
#define ANIMATE_TEST


#endif

To mam w pliku Animacje.h, zrobiłem tak jak kazałeś wszędzie wkleiłem nagłówek ANIMATE_TEST.h ale znowu błąd wyskoczył


syntax error :identifier 'Wrog_A'
syntax error :identifier 'Wrog_A'
'Animacje' : base class undefined
P-37466
kamillo121
» 2011-07-28 22:37:41
Pokaż lepiej te pliki po kawałku.

//chyba że masz już gdzieś zdefiniowaną nazwę ANIMATE_TEST no to wtedy tylko zmień to na inną
P-37467
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-28 22:43:08
HEADER FILES:

C/C++
//Animacje.h
#ifndef Animacje_hpp
#define Animacje_hpp
#include "Enemy_A.h"
#include <SFML/Graphics.hpp>
#include <iostream>
#include <time.h>

using namespace std;

class Animacje
{
public:
    void Animacje_Anime_A( Wrog_A & wrog );
   
};

#endif

//Enemy_A.h
#ifndef Enemy_A_hpp
#define Enemy_A_hpp
#include <SFML/Graphics.hpp>
#include <iostream>
#include <time.h>
#include "Animacje.h"
using namespace std;


class Wrog_A
    : public Animacje
{
   
    //zawartosc
};

#endif



SOURCE FILES:

C/C++
//Animacje.cpp
#include "Animacje.h"
#include "Enemy_A.h"
#include <SFML/Graphics.hpp>
#include <iostream>
#include <conio.h>
#include <time.h>

using namespace std;


void Animacje::Animacje_Anime_A( Wrog_A & wrog )
{
   
}





//Enemy_A.cpp
#include "Enemy_A.h"
#include <SFML/Graphics.hpp>
#include <iostream>
#include <conio.h>
#include <time.h>


using namespace std;

//Poniżej zawartosc
P-37468
kamillo121
» 2011-07-28 22:54:59
Pierwszy sposób:

Usuń z nagłówka Animacje.h poniższą dyrektywę:
C/C++
#include "Enemy_A.h"

Dodaj przed klasą animacja deklaracje:

C/C++
class Animacja;
class Wrog_A;

class Animacja
{
    //ciało
}

Drugi sposób:
Usuń z nagłówka Animacje.h poniższą dyrektywę:
C/C++
#include "Enemy_A.h"

Skorzystaj z możliwości jakie daje ci dziedziczenie i w metodzie klasy Animacja zamiast wskaźnika na Wrog_A użyj wskaźnika Animacje, posłuż się metodami wirtualnymi.
P-37470
« 1 » 2
  Strona 1 z 2 Następna strona