gpt4 book ai didi

c++ - 模板类的友元函数

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

我想使用友元函数返回一个嵌套类对象

template <typename T>
class X{
public:
class Y{
public:
int y;
}test;
public:
X(){
test.y=10;
}

template <typename U>
friend Y fun(X<U>);
};


template <typename T>
X<T>::Y fun(X<T> x){
return x.test;
}

但是我得到一个错误提示

在 'X::Y' 之前需要 'typename' 因为 'X' 是一个从属范围

怎么了?

最佳答案

您需要按照错误的字面意思执行操作:put typename之前X<T>::Y :

template <typename T>
typename X<T>::Y fun(X<T> x){
return x.test;
}

因为X<T>::Y的意思类型依赖于 T ,编译器一般无法知道是否 X<T>::Y指的是类型名或变量。在这种情况下,规则是如果你希望它是类型名,你必须用 typename 明确说明关键字。

关于c++ - 模板类的友元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089396/

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