C++ 如何在typedef中使用模板化类的数据成员 模板 结构A{ B型; } 样板 结构A { typedef双字型; }; 样板 B func() { A::键入my_type; my_型tmp; }
此代码不使用g++编译器编译。错误消息是: 错误:模板参数列表太少 谁能解释一下吗 谢谢和问候,C++ 如何在typedef中使用模板化类的数据成员 模板 结构A{ B型; } 样板 结构A { typedef双字型; }; 样板 B func() { A::键入my_type; my_型tmp; },c++,C++,此代码不使用g++编译器编译。错误消息是: 错误:模板参数列表太少 谁能解释一下吗 谢谢和问候, Van sal首先,我为所讨论的错误感到抱歉。正确的问题应该是: template <class T> struct A { typedef B type; } template<> struct A<double> { typedef double type; }; template<typename T, typename
Van sal首先,我为所讨论的错误感到抱歉。正确的问题应该是:
template <class T>
struct A {
typedef B type;
}
template<>
struct A<double>
{
typedef double type;
};
template<typename T, typename U>
B<U> func()
{
A<U>::type my_type;
my_type tmp;
}
模板
结构A{
B型;
}
样板
结构A
{
typedef双字型;
};
样板
void func()
{
typedef A::键入my_type;
my_型tmp;
}
这里主要的问题是编译器对语句感到困惑
template <class T>
struct A {
typedef B type;
}
template<>
struct A<double>
{
typedef double type;
};
template<typename T, typename U>
void func()
{
typedef A<U>::type my_type;
my_type tmp;
}
typedef A::type my_type;
它是类的数据成员还是其类型。所以我们必须明确地说它是一种类型。
所以用下面的语句替换上面的语句
typedef A<U>::type my_type;
typededef typename A::type my_type;
可能按照您调用func
的方式,请添加代码的这一部分。什么是B
,到处都在使用?我们是否只需猜测B
在所有这些中是什么?发布实际的代码,包括相关的模板/类如何?您使用B
一次带模板参数,一次不带模板参数。另外,在A::键入my_type
您正在声明一个名为my_type
的变量,然后继续使用它,就好像它是一个类型名一样。
typdedef typename A<U>::type my_type;