Допустим, у меня есть такой класс, как
#include<iostream>
#include<string>
template<typename CharT>
class base
{
//.....
public:
using string_type = std::basic_string<CharT>;
static inline string_type var;
//.....
};
class derived : public base<char>
{
private:
using base<char>::var;
public:
static base<char>::string_type get()
{
return var;
}
};
//template<>
//base<char>::string_type base<char>::var = "Value";
int main()
{
std::cout << derived::get();
}
base
, класс принимает тип char
и создает строковый тип для этого класса, но я хочу использовать эту строку strng_type
в class, поэтому я создал переменную static string_type
, которая должна быть установлена пользователем класса.
Для char
значение равно "Value"
, а для wchar_t
значение равно L"Value"
. поэтому я хочу скрыть var
от пользователя, унаследовав класс в указанном типе (char
), теперь, как инициализировать этот var
.
Я попытался удалить inline
и раскомментировать шаблон работает, но есть способ инициализировать inline static
переменную базового класса.
- Как инициализировать встроенный stati базового класса c член данных?
- Это хороший идея сделать это?