错误:未在此范围内声明“类”

时间:2012-06-12 17:55:38

标签: c++ class templates declaration

我想问一下,如何在另一个内部定义类。在下面的代码中。我尝试以#define" CCompField.h"的方式定义它。 ,但它不起作用。 :(。 我认为这是非常常见的编程问题,可能是在互联网上解决了100000次,但我不知道如何找到它。谢谢你的帮助。

#ifndef CNEWGAME_H
#define CNEWGAME_H

class CNewGame{
    public:
               CNewGame();
              ~CNewGame();

        void  BeginnerGame();
        void  IntermediateGame();
        void  AdviceGame();
        void  HowToPlay();
        void  NetGame( int mode );


        int MoveInMenu();

    protected:
        void  Intro();
        void  Animation ();
        void  Menu(int);
         int  MoveInNetMenu();
        void  NetMenu(int);

        void  HeadOfGame();
template <class T> void BodyOfGame(CCompField & b, T & a);
        void  FooterOfGame();
};

#endif

出现以下错误。

In file included from src/CNewGame.cpp:12:0:
src/CNewGame.h:37:36: error: ‘CCompField’ was not declared in this scope
src/CNewGame.h:37:45: error: ‘b’ was not declared in this scope
src/CNewGame.h:37:50: error: expected primary-expression before ‘&’ token
src/CNewGame.h:37:52: error: ‘a’ was not declared in this scope
src/CNewGame.h:37:53: error: variable or field ‘BodyOfGame’ declared void

2 个答案:

答案 0 :(得分:3)

而不是#define "CCompField.h"您需要包含它:

#include "CCompField.h"

你还有一对

#ifndef CNEWGAME_H
#define CNEWGAME_H  

但只有一个结束#endif。您不需要第二对#ifndef / #define

答案 1 :(得分:1)

  

我尝试以#define“CCompField.h”的方式定义它,但它不起作用。 :(

您需要找出CCompField定义#include的头文件,#define CNewGame.h({{1}}}。