我有一个模板类,需要设置使用向量大小的大小。实现这一目标的最佳途径是什么?下面是一个简化的版本,如果您需要查看,我将链接到完整的类。
template<int maxParams>
class ParameterChangeHandler
{
public:
inline ParameterChangeHandler()
{
//Do Stuff
};
//More Inline Methods that use maxparams and paramBitArray
protected:
unsigned char paramBitArray[(((maxParams)+((8) - 1)) & ~((8) - 1)) / 8]
};
int main()
{
std::vector<int> myVectorOfParameters = { 1,2,3,4,5 };
//This is OK
//ParameterChangeHandler<10> paramChangeHandler;
//This is what I want
ParameterChangeHandler<myVectorOfParameters.size()> paramChangeHandler
}这是为我正在构建的一个音频应用程序使用Wwise,这里有一个链接到实际的类给我问题AkFXParameterChangeHandler。
发布于 2020-11-05 15:25:20
你想要的是不可能的。这是你能做的。将myVectorOfParameters.size()作为参数传递给构造函数,并使用std::vector/std::basic_string而不是无符号char数组,这样您就不需要大小的常量表达式。
#include <vector>
#include <cstddef>
class ParameterChangeHandler
{
public:
ParameterChangeHandler(std::size_t const max_size)
: paramBitArray(max_size) // or reserve and push_back as needed
{
// Do Stuff
};
protected:
std::vector<unsigned char> paramBitArray;
};https://stackoverflow.com/questions/64700134
复制相似问题