2016-07-28 3 views
0

Я пытаюсь объявить класс «графика», но в graphics.cpp, я получаю ошибку.C++ Создание класса в отдельных файлах .cpp и .h

«графика» не является классом или пространством имен.

он говорит, что расположение ошибки

график :: график()

Я использую Visual Studio 2010, и в моем коде, графики выделена как класс .. но это, видимо, не считается классом graphics.cpp? Кто-нибудь знает, в чем проблема?

Вот мой код

//graphics.h 
#ifndef GRAPHICS_H 
#define GRAPHICS_H 

struct SDL_Window; 
struct SDL_Renderer; 

class graphics 
{ 
public: 
    graphics(); 
    ~graphics(); 
private: 
    SDL_Window* _window; 
    SDL_Renderer* _renderer; 
}; 

#endif 

, а затем

//graphics.cpp 
#include "graphics.h" 
#include "stdafx.h" 

graphics::graphics() {} 
graphics::~graphics() {} 
+0

Хм, 'graphics :: graphics()' должен работать хорошо, если вы не упускаете что-то в другом месте, которое вы не показываете. –

+1

Я не могу воспроизвести вашу ошибку, но тогда я не буду использовать VS или SDL. Попробуйте удалить как можно больше кода из своего примера, сохраняя при этом ошибку, объявление, если проблема все еще не очевидна, опубликуйте [минимальный полный пример] (http://stackoverflow.com/help/mcve) , – Beta

+1

Если вы положили '#ifdef GRAPHICS_H'' #error test' 'endif' перед символом' #include "graphics.h" ', вы получаете сообщение об ошибке« test »? – immibis

ответ

3

Если вы используете предварительно скомпилированные заголовки

#include "SDL.h" 
#include "graphics.h" 
#include "stdafx.h" <<<<< must always be included before anything else 

Изменения в

#include "stdafx.h" 
#include "SDL.h" 
#include "graphics.h" 

Компилятор должен выводить эту ошибку вместе с данной ошибкой.

Смежные вопросы