gpt4 book ai didi

c++ - 提供函数参数的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:33 24 4
gpt4 key购买 nike

我有一个 Api,它接受两个结构作为参数

struct bundle{
int a;
int b;
int c;
};

void func(const bundle& startBundle, const bundle& endBundle);

此外,我还必须编写另一个具有相同要求的 API,但它应该是 double 而不是 int a in bundle struct。

我可以编写 2 个结构(1 个用于 int,1 个用于 double),但它似乎不太好,如果我使用 struct ,函数有太多参数(3 个用于开始的参数和 3 个用于结束的参数)。请提出一些解决此问题的正确方法。

此外,如果我必须为 endBundle 使用默认参数,我该如何使用它?

最佳答案

您可以将 bundle 设为模板:

template <typename T>
struct bundle {
T a;
T b;
T c;
};

void func(const bundle<int>& startBundle, const bundle<int>& endBundle);

或者你可以使用std::array:

using IntBundle = std::array<int, 3>;
using DoubleBundle = std::array<double, 3>;
void func(const IntBundle& startBundle, const IntBundle& endBundle);

如果你想在同一个包中使用不同的类型,你可以使用 std::tuple:

using IntBundle = std::tuple<int,int,int>;
using OtherBundle = std::tuple<float,int,int>;

或者让bundle接受三个模板参数:

template <typename A, typename B, typename C>
struct bundle {
A a;
B b;
C c;
};

关于c++ - 提供函数参数的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34717441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com