【发布时间】:2020-08-03 03:03:17
【问题描述】:
假设我正在上课
#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 字符串,所以我创建了一个必须由设置的static string_type 变量类的用户。
对于char,值为"Value",对于wchar_t,值为L"Value"。所以我想通过继承指定类型(char)的类来向用户隐藏var,现在如何初始化var。
我已尝试删除 inline 并取消注释它可以工作的模板,但有一种方法可以初始化 inline static 基类变量。
- 如何初始化基类内联静态数据成员?
- 这样做是个好主意吗?
【问题讨论】:
标签: c++ templates static c++17 class-template