Le të themi se kam dy klasa Foo dhe Bar, dhe dua të bëj miq Foo me Bar pa ndryshuar Foo. Këtu është përpjekja ime:
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;
}
Marrja e një gabimi të përpiluesit në lidhje me përpjekjen për të thirrur një funksion privat, kështu që me sa duket nuk funksionoi. Ndonje ide?