Maps.cc
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#define NUM_LOCATIONS 25
using namespace std;
class Map
{
public:
MapLocation locations[NUM_LOCATIONS];
int numLocs;
Map () {
numLocs = NUM_LOCATIONS;
}
void initializeMap (string filen)
{
//Clipped because irrelevant
}
};
Main.cc:
#include "maps.h"
#include "schedule.h"
using namespace std;
int main()
{
Map PawneeMapCoordinates;
}
尝试运行此代码时,出现错误“对Map::Map()
的未定义引用”
编译器是否自己为map类创建了一个命名空间,然后尝试使用它?
如果我在自定义命名空间下创建Map类,则noargs构造函数在main中不起作用,应该如何正确创建这些类/命名空间?
答案 0 :(得分:0)
您的Maps.cc
应该如下所示:
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include "maps.h" // Important!
// #define NUM_LOCATIONS 25 // Move this to the header file
using namespace std;
Map::Map() {
numLocs = NUM_LOCATIONS;
}
void Map::initializeMap(string filen) {
...
}
问题在于,您在cc文件中声明了一个新的Map类,而未从头文件中实现“实际” Map类的方法。实现必须看起来像这样。