我的程序返回未定义的Data :: init()引用。据我所知,这些都是正确的。该方法在Data.h中进行原型化,并填入Data.cpp并在main.cpp中调用。代码是用Visual Studio编写的,它没有显示错误而无法找到方法。
Data.h
#ifndef DATA_H_
#define DATA_H_
#include <iostream>
#include "Controls.h"
#include "Sensors.h"
#include "Auto.h"
#include "AI.h"
class Data
{
public:
static void init();
static Sensors getSensors();
static Auto getAuto();
static Controls getControls();
static AI getAI();
private:
static Controls controls;
static Sensors sensors;
static AI brains;
static Auto auton;
};
#endif
Data.cpp
#include "Data.h"
using namespace std;
void Data::init()
{
Data::controls;
Data::sensors;
Data::brains;
Data::auton;
}
的main.cpp
#include <iostream>
#include "Data.h"
using namespace std;
int main()
{
Data::init(); // Initialize Data
return 0;
}
我正在使用g ++ 4.8.1
编译cmd我尝试在Data.cpp中使该方法保持静态,并且因特网上的大多数错误都是由于忘记在.cpp文件中在init之前添加Data::
。
CMD
g++ main.cpp
undefined reference to `Data::init()'
collect2.exe: error: ld returned 1 exit status