假設我有兩個班級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