gpt4 book ai didi

c++ - 封闭范围

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

这段代码有什么问题?

class matrix{ 
private:
friend transpose(const matrix&);
friend class invert;
public: //...
};
matrix (*p)(const matrix&)=&transpose; //error: no transpose() in scope.

语句是什么意思“友元声明不将名称引入封闭范围”。删除友元关键字时不会出现此问题

最佳答案

将 transpose() 声明为友元和不声明友元之间的区别在于,如果您声明“friend transpose()”,您所做的只是告诉编译器一个具有 friend 中显示的签名的函数 friend声明可以访问矩阵类型对象的私有(private)成员。它声明一个带有此签名的函数 transpose() - 您仍然必须在矩阵类的范围之外执行此操作。

如果删除 'friend' 关键字,则在类矩阵中声明了一个成员函数 transpose(),因此编译器实际上已经看到了一个可以获取其地址的函数。

关于c++ - 封闭范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8913298/

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