我有以下问题。我有一个带有私有(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);
}
}
}
最佳答案
我想我找到了解决方案。起初我觉得有点奇怪,但这是有道理的。当我试图在 .cpp 文件中编写 swap 函数的定义时,编译器告诉我 swap 无法访问 Inner,因为它是私有(private)的。解决方案是让这个交换函数也成为 Outer 的友元!
在代码中:
.h:
class Outer
{
class Inner
{
int data;
friend swap(Inner& lhs, Inner& rhs);
}
friend swap(Inner& lhs, Inner& rhs);
}
.cpp:
void swap(Outer::Inner& lhs, Outer::Inner& rhs)
{
using std::swap;
swap(lhs.data, rhs.data);
}
关于c++ - 私有(private)内部类的友元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22453192/