一千萬個為什麽

搜索

在模板類中實現和調用靜態方法

我的代碼如下:

Interpolation.h </強>

#ifndef INTERPOLATOR
#define INTERPOLATOR

#include 
#include 

template 
class Interpolator
{
    public:
        static T InterpolateVector(const std::vector> & Vector, T At);

    private:
        static T GetBasisValue(T x);
};

template 
T Interpolator::InterpolateVector(const std::vector> & Vector, T At)//Line #22
{
   //...
}  //Line #25

// ...

#endif //INTERPOLATOR

的main.cpp </強>

#include 
#include 
#include "Interpolator.h"

int wmain(int argc, wchar_t *argv[])
{
    std::vector> Measurements;
    Measurements.push_back(std::make_pair(0, 80.8));
    Measurements.push_back(std::make_pair(1, 80.4));
    Measurements.push_back(std::make_pair(3, 80.1));
    Measurements.push_back(std::make_pair(4, 79.6));

    float y2 = Interpolator::InterpolateVector(Measurements, 2.0f);

    return 0;
}

當我構建此代碼時,我收到以下錯誤消息:

C:... \ Interpolator.h;第22行
  錯誤C2955:'插值':使用類   模板需要模板參數   列表

     

C:... \ Interpolator.h;第25行
  錯誤C2244:   '插值:: InterpolateVector':   無法匹配函數定義   現有聲明

誰能告訴我這裏我做錯了什麽?

(IDE:Visual Studio 2010 Ultimate)

最佳答案

As written in the error message: 'Interpolator' : use of class template requires template argument list

你應該寫:

template 
T Interpolator::InterpolateVector(const std::vector> & Vector, T At)//Line #22
{
   //...
}  //Line #25

轉載註明原文: 在模板類中實現和調用靜態方法