首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用非常量值初始化模板类

如何使用非常量值初始化模板类
EN

Stack Overflow用户
提问于 2020-11-05 15:20:03
回答 1查看 116关注 0票数 0

我有一个模板类,需要设置使用向量大小的大小。实现这一目标的最佳途径是什么?下面是一个简化的版本,如果您需要查看,我将链接到完整的类。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-05 15:25:20

你想要的是不可能的。这是你能做的。将myVectorOfParameters.size()作为参数传递给构造函数,并使用std::vector/std::basic_string而不是无符号char数组,这样您就不需要大小的常量表达式。

代码语言:javascript
复制
#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;
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64700134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档