未定义的静态头方法引用

时间:2016-01-11 04:17:48

标签: c++ class methods header init

我的程序返回未定义的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

0 个答案:

没有答案