假设我有两个班级Foo和Bar,并且我想在不改变Foo的情况下让Foo成为Bar的朋友。这是我的尝试:朋友mixin模板?
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;
}
获取编译器有关尝试调用私有函数的错误,所以显然它不起作用。有任何想法吗?
+1:“友善foo” - 我挖的那个声音:> – 2010-01-27 10:24:59
友谊不是遗传 – 2010-01-27 10:35:39
我不是那么想。 – drby 2010-01-27 10:37:32