小编Sve*_*ann的帖子

在静态成员初始化期间访问私有静态函数

我有一个静态成员的类.这将使用同一个类的私有静态函数进行初始化.

#include <iostream>
#include <string>

class A
{
public:
    static std::string const s;

private:
    static std::string make()
    {
        return "S";
    }
};

std::string const A::s = A::make();

int main()
{
    std::cout << A::s << std::endl;
    // std::cout << A::make() << std::endl; // <-- Does not work
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:由于这个规则是允许的吗?很明显,评论的部分不起作用,因为我不允许从课外访问私人函数.那么为什么在启动期间私有静态成员的初始化是一个特殊情况呢?(并且在旁注:这条规则的目的是什么?是否允许这个确切的情况?)

我知道其他初始化静态成员的机制(如下所示:初始化私有静态成员).但在我的情况下,成员是const,所以据我所知,设置它的唯一方法是通过定义位置的直接初始化.

c++ static-methods initialization static-members language-lawyer

10
推荐指数
1
解决办法
308
查看次数