我认为下面的代码是不言自明的。我可以轻松地将静态变量传递给模板参数,并且它按预期工作。使用静态数组将清理代码,因此它看起来更好,但不幸的是,由于我在注释中粘贴的错误,它无法编译。请注意,它是由带有 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) 我希望每个功能都能完成两次.参数在数组中,所以它是这样的:
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)
在这种情况下,订单很重要.