草庐IT

Friend-ing

全部标签

c++ - 在没有 friend 的情况下授予对私有(private)构造函数的访问权限?

我正在写一些代码,我遇到了类似的情况:structBar;structFoo{friendstructBar;private:Foo(){}voidf(){}voidg(){}};structBar{Foo*f;Bar(){f=newFoo();}~Bar(){deletef;}};intmain(){Barb;}我宁愿Bar不是Foo的friend,因为除了Foo的构造函数Bar不需要访问任何Foo的私有(private)方法(因此不应该访问)。有没有办法只允许Bar创建Foo而不让它们成为friend?PS:意识到问题可能不是100%清楚。我不介意是否通过friend,只是所有Ba

c++ - 我如何在图书馆内让 main 成为我类(class)的 friend ?

请参阅myfirstattemptatansweringthis.我之前为了简化事情而忽略了讲述整个故事。事实证明我的例子有效!对不起。整个故事是,这是一个库,在一个文件中包含一个类,在另一个文件中包含主要内容,所有这些都链接到我的库中。该库为流程框架提供了基础,这就是为什么main在库中而不是流程中。下面是我所拥有的精简版。pf.hppusingnamespacestd;namespaceMyNamespace{classProcessManager{public:friendintmain(intargc,char**argv);private:voidtest();};};pf.

c++ - 如何让 boost::make_shared 成为我类(class)的 friend

我编写了一个带有protected构造函数的类,因此只能使用静态create()函数生成新实例,该函数将shared_ptr返回我的类。为了提供有效的分配,我想在create函数中使用boost::make_shared,但是编译器提示说我的类构造函数在boost::make_shared中受到保护。我决定让我的boost::make_shared成为我类的friend,但我对语法感到困惑。我试过了templatefriendboost::shared_ptrboost::make_shared(constConnectionManagerPtr&,conststd::string&)

c++ - 具有继承的 friend 类

如果我有两个继承类如下:classA{...}classB:publicA{...}第三个类定义为friend类A:classC{friendclassA;}我是否能够从classB(也是A类型的对象)访问classC的所有成员,就好像我一开始就定义了classBfriendClass吗? 最佳答案 friendship既不继承也不传递。两个类之间是严格的一对一关系。classA{friendclassB;intAries;};classB{friendclassC;intTaurus;};classC{intLeo;voidCap

c++ - 将 'friend class xxxxx' 放在公共(public)部分还是私有(private)部分会有什么不同吗?

classA1{public:friendclassB;}classA2{private:friendclassB;}有什么不同吗? 最佳答案 不,访问说明符对friend声明没有影响。 关于c++-将'friendclassxxxxx'放在公共(public)部分还是私有(private)部分会有什么不同吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2722222/

c++ - 基类的虚拟 friend 函数?

我正在学习这门语言,这是一个菜鸟的疑问。是否可以使用虚拟friend功能?我不知道这是否可能,我什至没有测试它,但它在某些情况下可能很有用。例如,对于重载的运算符DerivedClassdc;BaseClass&rbc=dc;cout我猜这是可能的,但我不确定,因为友元函数没有在类设计中实现,理论上也不是它的一部分(尽管在这个例子中,从概念上讲,operator编辑:我的担忧与这个例子有关:BaseClassbc;DerivedClassdc;BaseClass*pArr[2];pArr[1]=bc;pArr[2]=dc;for(inti=0;i在这个混合对象数组中,我希望为每个对象调

c++ - VS2015 更新 1 个错误,或错误的 C++ : Why can't a friend class access its friend's protected destructor?

以下似乎是ZeroCICE在其自动生成的代码中采用的一种模式,在我看来,这似乎是他们现在为其工具的许多版本制作单例(不确定为什么)的一种方式。各种编译器都没有问题,直到今天发现VisualStudio2015Update1(VS版本14.0.24720.00,VC++版本19.00.23506)报错。在Update1之前,VS2015也没有问题。我不确定它是带有Update1的VS2015C++编译器中的错误(回归?),还是其他编译器放任自流的错误(不符合标准)C++代码。这是代码模式的示例:classFoo{protected:virtual~Foo(){}friendclassFo

c++ - 自动化 C++ 类的 pimpl'ing——有简单的方法吗?

Pimpl是许多C++代码中样板的来源。它们似乎是宏、模板和一些外部工具的组合可以帮助解决的问题,但我不确定最简单的方法是什么。I'veseentemplates这有助于完成一些提升,但作用不大——您最终仍然需要为您尝试包装的类的每个方法编写转发函数。有没有更简单的方法?我正在想象一个工具用作制作过程的一部分。你希望你的公共(public)头文件是pimpl'd类,所以你提供一些输入文件,比如pimpl.in,它列出了你想要包装的类(实现的非pimpl'd),然后检查该文件,生成pimpl类,并且在“makeinstall”期间仅安装它们的header(不是原始类的header)。问题

mysql - 如何同时获得我的 friend 和 friend 的 friend ?

我想结交我的friend以及friend的friend,但仅限于二级friend我的表结构是这样的user_idfriend_user_id121423242537我需要的是,如果我的用户ID是“1”,那么我想要我所有的直接friend(在本例中为2和4)并且user_is2有一些friend(3、4、5),预期结果为2,3,4,5我怎样才能得到它? 最佳答案 使用联合和内部连接:selectfriend_user_idfromfriendswhereuser_id=?unionselectf2.friend_user_idfrom

php - 社交网站的数据库关系或 friend 表设计

您好,我正在创建一个社交网站,我想知道我将如何创建用户之间的关系。许多网站说我应该创建一个关系/friend表,但我展望future并认为这将是无效的。这个想法可能会像facebook一样流行,我想为那么多用户做好准备。Facebook有4亿用户,所以friend表至少是它的150倍。我认为查询friend的速度会很慢。因此,解决方案是为每个包含其friendID的用户创建一个单独的表。或包含ID的关联CSV文件。对我的网站设计的任何帮助将不胜感激。谢谢 最佳答案 今天构建您需要的架构,而不是您认为5年后需要的架构。您认为faceb