假设我有两个类 Foo 和 Bar,我想在不更改 Foo 的情况下与 Bar 交 Foo 朋友。这是我的尝试:
class Foo
{
public:
Foo(){}
private:
void privateFunction(){}
};
template <class friendly, class newFriend>
class friends : public friendly
{
private:
friend newFriend;
};
class Bar
{
public:
Bar(){}
void callFriendlyFunction()
{
friendlyFoo.privateFunction();
}
private:
friends<Foo, Bar> friendlyFoo;
};
int main(int argc, char* argv[])
{
Bar bar;
bar.callFriendlyFunction();
return 0;
}
尝试调用私有函数时出现编译器错误,因此显然它不起作用。有任何想法吗?