我在项目中有以下代码:
#ifndef MAP_H
#define MAP_H
#include <string>
#include "MapCell.h"
using namespace std;
class Map{
public:
Map();
Map(int, int);
Map(string);
virtual ~Map();
private:
int grid_size;
MapCell * grid;
};
#endif
当我去编译时,我得到错误“错误:'MapCell'没有命名类型”当我注释掉MapCell *网格并从main运行下一个代码块时:
#include <iostream>
#include <cstdlib>
#include "MapCell.h"
using namespace std;
int main() {
MapCell * test_var;
test_var = new MapCell();
delete test_var;
cout << "Press enter to end process...";
cin.get();
cin.get();
return 0;
}
一切正常。我知道我的MapCell.h和.cpp文件位于正确的位置,我猜测编译器可以看到它们,因为它可以从main运行。我读了一些其他问题,大多数答案似乎都指向语法错误或前向声明,这些都不适合这里(除非我忽略了什么)
关于这里发生了什么的任何想法?
答案 0 :(得分:1)
克里斯和大狼带领我找到解决问题的解决方案。我需要转发声明我的MapCell类,以便编译器能够链接到整个类。