gpt4 book ai didi

c++ - 如何初始化不可访问模板类的静态成员?

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:51 24 4
gpt4 key购买 nike

我有类似于下面的代码,其中一个类模板有一个需要初始化的静态变量。然后我有一个模板类 typedef,它使用私有(private)内部类作为模板参数:

template <typename T>
class Foo
{
private:
static const char* s_name;
};

class Bar
{
private:
class Baz
{
// ...
};

typedef Foo<Baz> FooBaz;
};

我想我可以像这样初始化静态变量:

template<>
const char* Foo<Bar::Baz>::s_name = "foobaz";

它可以工作...在 MS Visual Studio 2015 中。但是,当我使用 clang 构建时,出现如下错误:

Error 'Baz' is a protected member of 'Bar'

为什么这适用于 MSVS 而不是 clang?有没有一种方法可以初始化这个同时适用于两者的变量?

最佳答案

在“Bar”中公开一个“typedef Foo FooBaz”并使用“Bar::FooBaz::s_name”。

关于c++ - 如何初始化不可访问模板类的静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44663972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com