roz*_*ina 4 c++ private friend
我有以下问题.我有一个私人内部班级.我现在想为内部类实现一个朋友交换函数.但是我不知道如何制作非内联交换功能.如果我在内部类中定义它一切正常.如果有人可以告诉我如何使它非内联我会非常感激:)
一些代码确实说明了问题:
class Outer
{
class Inner
{
int data;
friend swap(Inner& lhs, Inner& rhs) // what is the syntax to
{ // make this function non inline?
using std::swap;
swap(lhs.data, rhs.data);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想我找到了解决方案.起初对我来说有点奇怪,但这很有道理.当我尝试在.cpp文件中编写交换函数的定义时,编译器告诉我交换无法访问Inner,因为它是私有的.解决方案是让这个交换功能成为Outer的朋友!
在代码中:
.H:
class Outer
{
class Inner
{
int data;
friend swap(Inner& lhs, Inner& rhs);
}
friend swap(Inner& lhs, Inner& rhs);
}
Run Code Online (Sandbox Code Playgroud)
的.cpp:
void swap(Outer::Inner& lhs, Outer::Inner& rhs)
{
using std::swap;
swap(lhs.data, rhs.data);
}
Run Code Online (Sandbox Code Playgroud)