我有一个外部API函数,该函数接受(const char* const*
)作为参数。我需要想出一种简单的方法来在我的类中创建这样的数组(有许多数组和函数调用),在初始化类实例后的某个时间初始化这些数组。我也在寻找一种干净的单行语法来初始化这些数组。
我对下面的代码感到满意,除了静态变量在函数外不可见:
class myClass
{
public:
template<typename... Ts> void SetVar_RequiredExtensions(Ts... args) {
const int size = sizeof...(args);
static char RequiredExtensions[size][MAX_SIZE] = {args...};
}
template<typename... Ts> void SetVar_RequiredDevicenames(Ts... args) {
const int size = sizeof...(args);
static char RequiredDevicenames[size][MAX_SIZE] = {args...};
}
}
// usage
myClass mc;
...
mc.SetVar_RequiredExtensions( "Extension one", "Extension two", ... );
mc.SetVar_RequiredDevicenames( "Name one", "Name two", ... );
...
// const char* const*
externalAPIfunctionCall(mc.RequiredExtensions);
externalAPIfunctionCall(mc.RequiredDevicenames);
...
基本上,我正在寻找类似的东西:
mc.whateverThatReflectsVariableName "Extension one", "Extension two", ... ;
externalAPIfunctionCall(mc.whateverThatReflectsVariableName);
我不想使用字符串,然后立即将它们转换为char*
。