c++ error C2061: syntax error epected identifier

Odpowiedz Nowy wątek
2015-01-23 14:49
0

Witam mam problem z funkcją w kodzie , jako programista amator próbuję napisać grę ucząc się z książki SDL Game Development by Shaun Mitchell.
Załączam kody źródłowe w których coś gdzieś jest nie ok ;/ Przeanalizowałem je i nie mam pojęcia co schrzaniłem. Bardzo proszę o pomoc.
W komentarzu w Pliku Główna funkcja wyróżniłem miejsce występowania błędu.

FabrykaObiektów.h

 #include<iostream>
#include"Enemy.h"
#include"Obiekty.h"
#include"Textury.h"
#include"AnimowanaGrafika.h"
#include"Funkcje.h"
#include"PrzyciskMenu.h"
#include<map>
using namespace std;

#ifndef __FabrykaObiektów__
#define __FabrykaObiektów__

class Kreator
{

public:
    virtual Obiekty*KreatorObiektów()const =0 ;
    Kreator(){};
    virtual ~Kreator() {};

};

class StwórzObiekt
{
public:
    bool Typ(string typeID, Kreator* NaszKreator)
    {
        map<string, Kreator*>::iterator it = m_creators.find(typeID);
        if (it != m_creators.end())
        {
            delete NaszKreator;
            return false;
        }
        m_creators[typeID] = NaszKreator;
        return true;
    }

    Obiekty* create(string typeID)
    {
        map<string, Kreator*>::iterator it = m_creators.find(typeID);
        if (it == m_creators.end())
        {
            cout << "Nie mozna znalezc typu pliku\t" << typeID << endl;
            return NULL;
        }

        Kreator*NaszKreator = (*it).second;
        return NaszKreator->KreatorObiektów();

    }
    static StwórzObiekt*Temp_Obiekt;
    static StwórzObiekt * Instance()
    {
        if (Temp_Obiekt == 0)
        {
            Temp_Obiekt =new StwórzObiekt();
            return Temp_Obiekt;
        }
        return Temp_Obiekt;
    }
private:
    StwórzObiekt(){};
    map<string, Kreator*>m_creators;

};

#endif

Główna Funkcja

#include<iostream>
#include<SDL.h>
#include"Funkcje.h"
#include<SDL_image.h>
#include"Textury.h"
#include"Obiekty.h"
#include"Player.h"
#include"Enemy.h"
#include"Klawiatura.h"
#include"GameStateMachine.h"
#include"StanMenu.h"
#include"PlayState.h"
#include"FabrykaObiektów.h"
#include"StateParser.h"
#include"GłówneMenu.h"
#include<vector>
using namespace std;
Textury*Textury::Temp_Instance = 0;
Gra*Gra::Temp_Instance = 0;
StwórzObiekt*StwórzObiekt::Temp_Obiekt = 0;
Klawiatura*Klawiatura::s_pInstance = 0;
typedef Textury p_Textury;                       // p = pointer
typedef Gra p_Gra;
Obiekty*Ob;
Enemy *En;
Player* Pl;

vector<Obiekty*> Tablica_Obiektow; //Utworzenie tablicy , która przechowuje postac badz obiekt wraz z parametrami.

bool Gra::init(const char *title,int x , int y , int szer , int wys, int flag)  //Utworzenie okna i rendera , nastawienie koloru rendera.
{

    if (SDL_Init(SDL_INIT_EVERYTHING) == 0)
    {
        Okno = SDL_CreateWindow(title, x, y, wys, szer, flag);
        Ren = SDL_CreateRenderer(Okno, -1, 0);
        SDL_SetRenderDrawColor(Ren, 0, 0, 0, 255);
        StwórzObiekt::Instance()->Typ("SDL_Obiekty", new Obiekt()); // W TEJ FUNKCJI WYSTEPUJE BŁĄD "EXPECTED A TYPE SPECIFIER"  
        MachineStates = new GameStateMachine();
        MachineStates->pushState(new MainMenu());

    }
    else
    {
        cout << "Init Fail\n";
        return false;
    }
    if (Okno == 0)
    {
        cout << "Windows Fail\n";
        return false;
    }
    else
    {
        cout << "Windows Success\n";
    }
    if (Ren == 0)
    {
        cout << "Render Fail\n";
        return false;
    }
    else
    {
        cout << "Render Success\n";
    }
     Działa = true;
     return true;
}

void Gra::Quit() // Uwalnienie pamieci i takie pierdoły.
{
    std::cout << "cleaning game\n";
    SDL_DestroyWindow(Okno);
    SDL_DestroyRenderer(Ren);
    SDL_Quit();
    Działa = false;
}

void Gra::Events()    // Zamykanie Gry oraz obsługa myszki i klawiatury.
{
    if (Klawiatura::Instance()->isKeyDown(SDL_SCANCODE_RETURN))
    {
        MachineStates->changeState(new PlayState());
    }

    Klawiatura::Instance()->update();

}

void Gra::render() //Wyświetlanie obrazków i animacji
{

    SDL_RenderClear(Ren);

    MachineStates->render();
    SDL_RenderPresent(Ren);

}

void Gra::update()
{

    MachineStates->update();
}
GDZIE ten błąd... i jego CAŁA treść - Shalom 2015-01-23 15:02
Error 1 error C2061: syntax error : identifier 'Obiekt' oraz wynikajacy z niego: Error 2 error C2660: 'StwórzObiekt::Typ' : function does not take 1 arguments - Timik007 2015-01-23 15:15

Pozostało 580 znaków

2015-01-23 15:21
0

A co to jest "Obiekt"? Masz taką klasę? Bo wszędzie widzę Obiekty a nie Obiekt.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-01-23 15:21

Pozostało 580 znaków

2015-01-23 15:29
0

Obiekt() to funkcja która podstawiam do "bool Typ(string typeID, Kreator* NaszKreator)" . Teoretycznie powinienem móc podstawic jakąkolwiek funkcję nawet bez uprzedniego utworzenia jej. Znalazłem kod czlowieka który pisał kod z tą samą książką co ja, wiec jest bardzo zbliżony. Po porównaniu jednak , nadal nie wiem co mam źle
Odpowiednik Fabryka Obiektów:
https://github.com/samsonchen[...]/SDL2Game/GameObjectFactory.h
Odpowiednik Główna Funkcja
https://github.com/samsonchen[...]blob/master/SDL2Game/Game.cpp

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