gpt4 book ai didi

c++ - 模板大小递归——构造函数多重重载

转载 作者:行者123 更新时间:2023-11-28 06:11:58 25 4
gpt4 key购买 nike

我正在做一个练习(不是家庭作业;它是 self 分配的),它需要一个模板化类,该类调用一个具有函数的一半大的类。自然地,这意味着递归会一直持续到某个基本情况 (n == 1)。我遇到的问题是我还想编写一个基于 F 的构造函数,当 n == 0(使用复制构造函数,如 0/2 == 0)时,这会导致“多重重载”。

template<size_t n>
struct Foo {
Foo() {};
Foo(const Foo<n / 2>& x) {};
Foo<n / 2> bar() {
Foo<n / 2> rtn;
if(n > 1) {
rtn.bar();
}
rtn.bar();
return rtn;
}
}

int main(int, char const**) {
Foo<4> a;
Foo<2> b = a.bar();
}

这附近有什么吗?为 n == 0 专门化任一构造函数都不起作用,因为我仍然剩下两个构造函数。

谢谢

最佳答案

您可以通过添加未使用的参数来消除“循环构造函数”的歧义

Foo(const Foo<n / 2>& x, int) {};

这样n=0,1的情况还是和copy constructor不一样

关于c++ - 模板大小递归——构造函数多重重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084910/

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