Foo と Bar の 2 つのクラスがあり、Foo を変更せずに Foo を Bar と友達にしたいとしましょう。これが私の試みです:
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;
}
プライベート関数を呼び出そうとするとコンパイラ エラーが発生するため、明らかに機能しませんでした。何か案は?