C++ C++;未知类型名称,即使类型是通过标头定义的
这让我发疯,我有一个名为Model的类,一个名为View的类,还有一个用于GameCommand的头文件。据我所知,我已经包括了右标题保护和所有内容,但我一直得到一个未知类型名错误 模型hC++ C++;未知类型名称,即使类型是通过标头定义的,c++,C++,这让我发疯,我有一个名为Model的类,一个名为View的类,还有一个用于GameCommand的头文件。据我所知,我已经包括了右标题保护和所有内容,但我一直得到一个未知类型名错误 模型h #ifndef MODEL_H #define MODEL_H class Model { public: Model(); //default constructor }; #endif Model.cpp #include "Model.h" #include <iostream>
#ifndef MODEL_H
#define MODEL_H
class Model
{
public:
Model(); //default constructor
};
#endif
Model.cpp
#include "Model.h"
#include <iostream>
using namespace std;
Model::Model() //default constructor
{
whatever
}
View.cpp
#include "View.h"
#include <iostream>
using namespace std;
View::View()
{ whatever
}
我觉得我什么都试过了,这里有什么我没有看到的吗?您可以尝试向前声明类 班级模式 阶级观
在GameCommand.h中,是否将
Model.h
或View.h
中的任何一个包含在一起?您可能不会显示整个代码。至少我不能用你提供的复制。在GameCommand.h
中,你可能可以对模型和视图使用前向声明,而不包括标题。这意味着你有一个循环包含依赖项。我们通常通过转发前面提到的声明来解决这个问题。@RaunaqZamal如果Model.h
包含View.h
,那么您最初发布的代码是误导性的。这就是为什么我之前的评论是关于编译器错误的,而不是由分析源代码的工具生成的错误。
#ifndef GAMECOMMAND_H
#define GAMECOMMAND_H
#include "Model.h"
#include "View.h"
void DoGoCommand(Model&, View&);
#ifndef GAMECOMMAND_H
#define GAMECOMMAND_H
#include "Model.h"
#include "View.h"
void DoGoCommand(Model&, View&);
error: unknown type name 'Model'
void DoGoCommand(Model&, View&);
^
error: unknown type name 'View'
void DoGoCommand(Model&, View&);
^