2012-12-16 67 views
0

所以我有這個頭文件:預計初始化*令牌

#pragma once 

#include "engine.hpp" 

namespace spacecubes 
{ 
    extern engine* _engine; 
} 

和包括engine.hpp:

#pragma once 

#include <iostream> 

#include "glinclude.hpp" 
#include "debug.hpp" 
#include "convert.hpp" 
#include "renderer.hpp" 
#include "global.hpp" 

namespace spacecubes { 
    void display(); 

    class engine { 
     renderer renderengine; 

    public: 
     void start(int argc, char* argv[]); 
     void stop(int status = 0); 
     void poll(); 

     renderer getRenderEngine() {return renderengine;} 
    }; 
} 

編譯報導什麼以後是:

g++ -c -o bin/obj/engine.o src/engine.cpp 
In file included from src/engine.hpp:9, 
       from src/engine.cpp:1: 
src/global.hpp:7: error: expected initializer before '*' token 
src/engine.cpp: In function 'void spacecubes::display()': 
src/engine.cpp:5: error: '_engine' was not declared in this scope 

我不明白。這是什麼意思,它預計初始化?提前致謝!

+0

看看'的src/global.hpp:7:',錯誤是有 – vguzmanp

+0

@fawques我知道,我真不敢不明白錯誤。 –

+0

想想你在做什麼:在'global.hpp'和'engine.hpp'中包含'engine.hpp'。 –

回答

1

與向前聲明替換

#include "engine.hpp" 

namespace spacecubes { class engine; } 
+0

謝謝,它已經超過了這個錯誤,但現在鏈接器開始抱怨有未定義的符號。我想我現在可能必須自己弄明白。再次感謝。 –

+0

@YoshiHi定義符號 - 在一個實現文件(cpp文件)中,你需要有'namespace spacecubes {engine * _engine; } - 這是聲明符號的定義。 –

+0

啊,謝謝Luchian!我忘了彌補我對編譯器的承諾:將'engine * spacecubes :: _ engine'添加到main.cpp中。 *爆頭在牆上* –

相關問題