gpt4 book ai didi

在类外部声明的 C++ 类依赖 typedef

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

我有两个类,我称之为 classA 和 classB。

在classA中我定义了一些类型,比如T5。
在 classB 中,我使用在 classA 中定义的此类类型。

为了避免写

typename classA<T1,T2>::T5

在我的整个代码中,我想创建一个独立类型的类,我可以通过它的名字直接调用它 - templatedClassA在这个例子中。模板参数仍然是参数化的,我会在未来的项目中使用 classA 和 classB 定义它们。

#include <cstdlib>
#include <iostream>

using namespace std;

//classA
template <class T1, class T2>
class classA
{
public:
typedef T1 T5;
classA();
};

template <class T1, class T2>
classA<T1,T2>::classA(){}
//end classA

template <class T1, class T2>
typedef classA<T1,T2> templatedClassA;

template <class T1, class T2>
typedef typename classA<T1,T2>::T5 T6;






//classB
template <class T3, class T4>
class classB
{
public:
classB();
};

template <class T3, class T4>
classB<T3,T4>::classB(){}
//end classB



int main(int argc, char *argv[])
{

classB<int, double> classBInstance;

system("PAUSE");
return EXIT_SUCCESS;
}

编译上述代码时,出现以下两个错误:

template declaration of `typedef class classA<T1, T2> templatedClassA'
template declaration of `typedef typename classA<T1, T2>::T5 T6'.

我做错了什么?

最佳答案

模板不能用于typedef 声明。您必须将声明包装在这样的类中:

template <class T1, class T2>
class templatedClassA {
typedef classA<T1, T2> type;
};

template <class T1, class T2>
class T6 {
typedef typename classA<T1, T2>::T5 type;
};

在 C++11 中,您可以使用 using 别名,如其他答案所示。

关于在类外部声明的 C++ 类依赖 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456753/

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