gpt4 book ai didi

c++ - 有没有一种方法可以使用默认模板参数而不必在 C++ 中使用 <>?

转载 作者:搜寻专家 更新时间:2023-10-31 00:16:15 24 4
gpt4 key购买 nike

我在某处使用了一个结构,声明为:

struct Foo
{
someArray[64];
//...other stuff
};

很多地方用的很广泛,我想改成这样:

template <size_t N = 64>
struct Foo
{
someArray[N];
//...other stuff
};

因为有一个地方(确切地说是四个)需要将此结构与 128 字节数组一起使用以确保正确性,但它为所有其他用途引入的惩罚是不值得付出的。在提供默认模板参数时,我希望它能透明地通过,除了那些需要更广泛的内部数组然后声明 Foo<128> 的技术人员。 .不幸的是,它似乎迫使每次使用它都说 Foo<> .有解决办法吗?

最佳答案

实例化类模板时不能省略尖括号。

但是,您可以为您的 Foo 指定一个不同的名称类模板(例如 FooN ),然后提供类型别名,例如:

typedef FooN<> Foo;

这样,使用 Foo 的原始非模板版本的客户无需更改,需要灵活覆盖默认值的客户端 N可以使用通用类模板:

FooN<128> obj;

关于c++ - 有没有一种方法可以使用默认模板参数而不必在 C++ 中使用 <>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843449/

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