小编doc*_*ocp的帖子

将数组元素传递给模板

我认为下面的代码是不言自明的。我可以轻松地将静态变量传递给模板参数,并且它按预期工作。使用静态数组将清理代码,因此它看起来更好,但不幸的是,由于我在注释中粘贴的错误,它无法编译。请注意,它是由带有 c++17 标志的 gcc 10.2 编译的。所以问题是如何将数组元素传递给模板。

#include <iostream>
#include <vector>
#include <tuple>

using DataTransfer = std::tuple<char, int>;
using DataPool     = std::vector<DataTransfer>;

typedef struct Event
{
    DataPool dataPool;
    const char* description;
} Event;

template <Event& event>
class EventTransmitter
{
    public:
    EventTransmitter()
    {
        std::cout<<event.description<<"\n";
    }
};

static Event ev1{ {{'d', 4}, {'a', 1}}, "Description 1"};
static Event ev2{ {{'g', 7}, {'b', 6}}, "Description 2"};

static Event evs[2] {
    { {{'d', 4}, {'a', 1}}, "Description 1"},
    { {{'g', 7}, {'b', 6}}, "Description 2"} …
Run Code Online (Sandbox Code Playgroud)

c++ arrays templates c++17

6
推荐指数
1
解决办法
88
查看次数

每次操作两次

我希望每个功能都能完成两次.参数在数组中,所以它是这样的:

fun1(A[0]);
fun1(A[1]);

fun2(A[0]);
fun2(A[1]);

fun3(A[0]);
fun3(A[1]);
Run Code Online (Sandbox Code Playgroud)

有没有办法自动完成?我不能用

for(int i=0; i<2; i++)
Run Code Online (Sandbox Code Playgroud)

因为它将是:

fun1(A[0]);
fun2(A[0]);
fun3(A[0]);

fun1(A[1]);
fun2(A[1]);
fun3(A[1]);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,订单很重要.

c++ arrays for-loop

0
推荐指数
1
解决办法
83
查看次数

标签 统计

arrays ×2

c++ ×2

c++17 ×1

for-loop ×1

templates ×1