我在项目中有以下代码:
#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 *网格并从main运行以下代码块时,出现错误“错误:'MapCell'未命名类型”:
#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运行。我阅读了一些其他问题,大多数答案似乎都指向语法错误或正向声明,这些实际上并不适合此处(除非我忽略了某些内容)
对这里发生的事情有什么想法吗?
最佳答案
克里斯和大狼带我找到了解决问题的解决方案。我需要向前声明我的MapCell类,以便编译器能够链接到整个类。
关于c++ - 类未命名类型错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20559863/