做了一个小例子。编译器找不到ref类型作为getA()方法的返回值。为什么会这样?那么最好的写作方式是什么?谢谢你。
template<class T>
class A
{
T a;
public:
using ref = const T&;
ref getA()const;
};
template<class T>
A<T>::ref A<T>::getA() const
{
return a;
}
做了一个小例子。编译器找不到ref类型作为getA()方法的返回值。为什么会这样?那么最好的写作方式是什么?谢谢你。
template<class T>
class A
{
T a;
public:
using ref = const T&;
ref getA()const;
};
template<class T>
A<T>::ref A<T>::getA() const
{
return a;
}
在这种情况下,如果没有提示,
typename
编译器会将依赖名称ref
视为类型名称以外的名称。但是,typename
在这种情况下根本不需要使用,因为这个名称可以在这个类的上下文中找到。使用尾部语法作为返回值更容易和更短,它也摆脱了A<T>::
.