无法将对<vector2d,double>(el1,el2)添加到静态映射<vector2d,double =“”>

时间:2019-05-09 15:39:03

标签: c++ visual-studio std

我上了uglifier (4.1.20)类。
它包含以下内容:Functions
我也创建了自己的static std::map<vector2d, double> functionValues; clsss。
因此,当我尝试从vector2d类的成员函数中使用insertemplace / operator[]或将元素添加到此Function中时,它失败了。
因此,错误代码为C2676。我没有发现任何问题,因此非常感谢任何建议可以导致此问题。 enter image description here 这是一些代码:

map


#pragma once

#include "vector2d.h"
#include <map>
extern unsigned int functionCallCounts;

class Function
{
private:
    static std::map<vector2d, double> functionValues;
    static int coef;
public:
    inline static void setCoef(int _coef) { coef = _coef; };
    static double calcFunction(vector2d _point);
};

和vector2d

#include "Function.h"
#include <cmath>

std::map<vector2d, double> Function::functionValues;
int Function::coef;

unsigned int functionCallCounts;

double Function::calcFunction(vector2d _point)
{
    for (auto e : functionValues)
    {
        if (_point == e.first)
        {
            return e.second;
        }
    }
    double functionValue = 2 * pow((_point.x - coef), 2) - _point.x * _point.y + 5 * pow(_point.y, 2);
    ++functionCallCounts;
    functionValues.insert(std::make_pair(_point, functionValue));
    return functionValue;
}

0 个答案:

没有答案