permutation_li-6ren">
gpt4 book ai didi

c++ - 如何初始化静态成员变量 "dynamically"?

转载 作者:行者123 更新时间:2023-11-30 02:52:12 24 4
gpt4 key购买 nike

如何“动态”初始化静态成员变量?

例如,我在一个类的头文件中声明了这个变量:

class MyPermutation {
static std::array<std::vector<uint8_t>,2> permutation_list;
};

我希望它具有以下值:

permutation_list[0] = std::vector<uint8_t>{0};
permutation_list[1] = std::vector<uint8_t>{};
for ( uint8_t i = 0; i < 8; i++ )
permutation_list[1].push_back( 1<<i );

我应该把上面的代码放在哪里?

最佳答案

这通常由调用初始化静态变量的函数完成:

std::array<std::vector<uint8_t>,2> MyPermutation::permutation_list = someFunctionThatBuildsTheInitialValues();

或者,从 C++11 开始,它可以是一个 lambda:

std::array<std::vector<uint8_t>,2> MyPermutation::permutation_list = 
[]() -> std::array<std::vector<uint8_t>,2> {
std::array<std::vector<uint8_t>,2> the_list;
the_list[0] = std::vector<uint8_t>{0};
the_list[1] = std::vector<uint8_t>{};
for ( uint8_t i = 0; i < 8; i++ )
the_list[1].push_back( 1<<i );
/* ... */
return the_list;
}();

关于c++ - 如何初始化静态成员变量 "dynamically"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19153759/

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