#c #templates #member #static-members
#c #шаблоны #Участник #статические члены
Вопрос:
Я хочу статическую константу, 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:
Вы должны использовать точно такое же объявление, включая квалификаторы:
const std::string MyClass::LIST_DELIMITER = ",";
^^^^^
В этом определении статического члена класса нет шаблона.
Комментарии:
1. И вы не включаете
static
, потому что это не «квалификатор», это область видимости (и связь).