如何初始化模板方法中使用的静态类成员?

时间:2011-10-04 22:55:34

标签: c++ templates member static-members

我想在下面的课程中定义一个静态常量LIST_DELIMITER。但是,我无法弄清楚如何用模板声明它。

// MyClass.h
#pragma once
#include <boost/algorithm/string.hpp>
#include <vector>

class MyClass
{
public:
    MyClass();
    virtual ~MyClass();

    template<class T>
    void GetAsVectorOfValues(std::vector<T> values)
    {
        boost::split(values, value_, boost::is_any_of(LIST_DELIMITER));
    }

private:
    std::string value_;
    static const std::string LIST_DELIMITER;
};

// MyClass.cpp
std::string MyClass::LIST_DELIMITER = ",";

我知道stackoverflow上有类似的问题,但我似乎无法找到我正在寻找的东西。在我的情况下,有一点不同的是,我的整个班级都不是模板化的,只是单一的方法。

1 个答案:

答案 0 :(得分:3)

您必须使用完全相同的声明,包括限定符:

const std::string MyClass::LIST_DELIMITER = ",";
^^^^^

此静态类成员定义中没有涉及模板。