ошибка: «х» не называет тип - PullRequest
2 голосов
/ 12 декабря 2011

Когда я пытаюсь объявить экземпляр моего класса 'Game', я получаю ошибку компиляции "error:" Game "не называет тип" для main.cpp.

Если, возможно, это не имеет значения, но я использую кодовые блоки.

Соответствующий код из Game.cpp

#include "../include/main.h"

class Game
{
    private:

    public:
};

Соответствующий код из Main.cpp

#include "../include/main.h"

Game g; //this is the line it is referring to

int main(int argc, char* args[])
{
    return 0;
}

Я только начинаю изучать c ++, поэтому я, вероятно, упустил из виду нечто очевидное: (

Ответы [ 3 ]

3 голосов
/ 12 декабря 2011

Включить объявление "Game" в заголовок

блокнот main.h =>

#ifndef MAIN_H
#define MAIN_H

class Game
{
    private:
      ...
    public:
      ...
};
#endif
// main.h

notepad main.cpp =>

#include "main.h"

Game g; // We should be OK now :)

int 
main(int argc, char* args[])
{
    return 0;
}

gcc -g -Wall -pedantic -I../include -o main main.cpp

Обратите внимание, как вы:

1) Определите ваши классы (вместе с любыми определениями типов, константами и т. Д.) В заголовке

2) # включить заголовок в любой файл .cpp, для которого нужны эти определения

3) Скомпилировать с "-I", чтобы указать каталог (или каталоги), содержащие ваши заголовки

Надежда, которая помогает

0 голосов
/ 12 декабря 2011

C файл или cpp файл является причиной нескольких ошибок, скомпилированных.

Заголовочный файл для каждого

 # pragma once 
 Or
 # Ifndef __SOMETHING__ 
 # define __SOMETHING__

 Add the code ...

 # Endif
0 голосов
/ 12 декабря 2011

Может быть, вы можете удалить объявление класса Game в Game.cpp и попытаться создать другой файл с именем "Game.h" в ../inclue/, например:

#ifndef _GAME_H_
#define _GAME_H_

class Game
{
    private:
    public:
};

#endif

и включите этот заголовочный файл в Main.cpp. Тогда я думаю, что ошибка не произойдет:)

Поскольку мы обычно используем файл .cpp для определения класса и файл .h для объявления, включите файл .h в файл Main.cpp.

...