如何将对象数组作为参数传递给模板

程序员

我正在尝试创建一个模板,该模板将接受对对象的C样式数组的引用作为参数:

#include <iostream>

class A
{
public:
A(){}
};

template<int N, class A& obj> struct W {};

int main()
{
A b[5]; 
W<5,b> w; 
}

但是当编译代码时我得到了错误:

$ c++ -std=c++11 -g try37.cpp
try37.cpp: In function 'int main()':
try37.cpp:14:5: error: the value of 'b' is not usable in a constant expression
 W<5,b> w;
     ^
try37.cpp:13:3: note: 'b' was not declared 'constexpr'
 A b[5];
   ^
try37.cpp:14:6: error: could not convert template argument 'b' to 'A&'
 W<5,b> w;
      ^
try37.cpp:14:9: error: invalid type in declaration before ';' token
 W<5,b> w;
         ^

我尝试了许多方法,但无法解决编译问题?怎么解决一样?

Yucel_K

编辑:C样式数组添加到答案。

如果试图使结构W具有对象容器,则可以使用向量。我仍然不确定为什么要这么做。

struct W
{
    template<typename Type, typename A> //constructor with a vector
    W(std::vector<Type,A> & vec)
    {
       //...
    }

    template<typename Type>
    W(int arraySize, Type & obj) //constructor with an array
    {
       //...

    }
};

int main()
{
    const int ArraySize = 5;
    A b[ArraySize];
    std::vector<A> vec;

    for(int i =0; i < 5; i++)
        vec.push_back(b[i]);

    W w(vec); //calling struct W constructor that takes a vector.
    W w2(ArraySize,b); //calling struct W constructor that takes c style array
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将对象作为参数传递给函数?

如何将对象作为参数传递给弹簧方面?

如何将对象作为参数传递给函数

如何将对象的属性作为参数传递给函数

如何将对象模型(其中包含对象模型数组)传递给API以作为参数插入

如何将对象作为参数传递?

我们如何将对象作为参数传递给对象值中的函数名?

如何将对象作为默认参数传递给ecmascript中的函数?

如何将对象名称值对作为参数传递给方法?

AsyncTask-如何将对象作为参数传递给匿名AsyncTask类

如何将对象作为参数传递给CosmosDB存储过程

如何将对象属性作为函数参数传递给lambda函数?

如何将对象作为参数传递给剑道网格读取方法

如何将对象实例传递给Jinja HTML模板

如何使用 SQL API 将对象的 JSON 数组作为参数传递给 ARRAY_CONTAINS 函数

如何将对象作为作用域传递给eval?

如何将对象或分组参数传递给SQL IN子句?

将对象作为参数传递给链接

如何将对象作为BlackBerry SOAP请求参数传递

如何将对象属性作为参数传递?(JavaScript)

如何将对象属性作为函数参数传递?

如何将对象/类作为函数的参数传递

如何将对象数组作为 redux API 请求传递?

如何将模板作为参数传递给函数

将对象传递给函数时,如何防止模板化构造函数将类作为参数

如何在Java中将对象数组作为参数传递

如何将对象类型作为参数传递给构造函数并向其强制转换变量(JAVA)?

Lua-如何将对象的函数作为参数传递给另一个函数

如何将具有多个对象的状态数组作为参数传递给graphql突变?