gpt4 book ai didi

c++ - friend mixin模板?

转载 作者:搜寻专家 更新时间:2023-10-31 02:00:22 25 4
gpt4 key购买 nike

假设我有两个类 Foo 和 Bar,我想在不改变 Foo 的情况下让 Foo 和 Bar 成为 friend 。这是我的尝试:

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;
}

在尝试调用私有(private)函数时出现编译器错误,显然它不起作用。有什么想法吗?

最佳答案

它不起作用,因为 friends 无论如何都无法访问 privateFunction,因为它是 private(后代类无法访问 private字段)。如果您将 privateFunction 声明为 protected,它将起作用。

这是一个 nice paper关于 C++ 中的 Mixins。 (PDF 链接)

关于c++ - friend mixin模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com