gpt4 book ai didi

C++:将类型声明为另一个模板化类型的变体

转载 作者:太空狗 更新时间:2023-10-29 21:19:04 25 4
gpt4 key购买 nike

在下面的代码中,我定义了一个 AnotherClass 模板来接受两个类型的参数。这些参数中的每一个都是由另一个模板创建的类型。两种类型参数之间的唯一区别是传递给这些类型模板的 int 参数的值。评论显示了我真正想做的事情。

#include <iostream>
using namespace std;

template <int size>
class MyClass {
private:
int sz;
public:
MyClass() {
this->sz = size;
}
void tellSize() {
cout << this->sz;
}
int length() {
return this->sz;
}
};

// template <typename T1>
template <typename T1, typename T2>
class AnotherClass {
private:
T1 myC;
T2 myCp1;
//templateof(T1)<parameterof(T1)+1> myCp1;
public:
};

int main() {
//AnotherClass<MyClass<10> > myC;
AnotherClass<MyClass<10>, MyClass<11> > myC;
return 0;
}

我真正想做的是将 myCp1 的类型静态声明为“使用 myC 的模板并将 myC 的参数递增 1”,而不必将这两种类型都传递给 AnotherClass 模板...

有什么办法可以实现吗?

最佳答案

您可以提供 AnotherClass 的部分特化,它进行模式匹配以分离模板类和模板参数。

template <typename T>
class AnotherClass;

template <template <int> class SomeTemplate, int size>
class AnotherClass<SomeTemplate<size> >
{
SomeTemplate<size> myC;
SomeTemplate<size+1> myCp1;
};

关于C++:将类型声明为另一个模板化类型的变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28493178/

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