静态地图初始化错误 - 未解析的外部符号

时间:2015-08-31 07:11:24

标签: c++ visual-studio visual-c++ dictionary static-initialization

使用Visual Studio 2015,我一直在尝试加载一个表,其中包含转换为弧度的度数的浮点值。由于MathFunctions类是静态的(静态函数),我试图初始化保留转换的弧度值的映射。但是当我在InitTables / Degree2Radians函数中引用地图时,我一直收到 LNK2001未解析的符号错误 - 请注意,header和cpp文件位于同一文件夹“Utilities”下的同一项目中

声明(MathFunctions.h)

 #pragma once
 #ifndef MATHFUNCTIONS_H
 #define MATHFUNCTIONS_H
 #define _USE_MATH_DEFINES
 #include <math.h>
 #include <map>
 #include <fstream>
 using namespace std;

namespace LookupTables
{
    class MathFunctions
    {
      private:
        static map<short, float>Degree2RadiansTable;

      public:
        static void InitTables();
        static float Degree2Radians(short angleInDegrees);      
};
}
#endif

虽然定义(MathFunctions.cpp)如下

namespace LookupTables
{
    void MathFunctions::InitTables()
    {
        // Load degree2radians table
        short degrees = 0;
        float radians = 0;
        ifstream infile("..\Tables\Degree2Radians.txt");
        if (infile.good() && infile.is_open())
        {
                while (infile >> degrees && infile >>radians) 
                {
                    MathFunctions::Degree2RadiansTable.insert({ degrees,radians });
                }
        }
        infile.close();     
    }

    float MathFunctions::Degree2Radians(short angleInDegrees)
    {
        return MathFunctions::Degree2RadiansTable[angleInDegrees];
    }
}

我不确定是什么问题。

0 个答案:

没有答案