friend-function相关内容

C ++中的朋友成员函数-前向声明不起作用

我遇到的情况与但是,在我的情况下,由于类B正在使用它,因此它需要知道它,因此该线程中给出的解决方案对我来说不起作用.我试图也给函数本身做一个前向声明,但效果不佳.似乎每个类都需要另一个的完整定义... 有没有简单的方法可以解决?我更喜欢一个不包含封装旧类的新类的解决方案. 代码示例: //A.h class B; //not helping void B::fB(); //not ..
发布时间:2020-06-15 19:21:10 C/C++开发

2个班级可以共享一个朋友功能吗?

今天,我对朋友功能有疑问. 两个类可以具有相同的朋友功能吗? 说个例子 friend void f1(); 在A类和B类中声明.这可能吗?如果是这样,函数f1()可以访问两个类的成员吗? 解决方案 一个示例将对此做出最好的解释: class B; //defined later void add(A,B); class A{ priva ..
发布时间:2020-06-15 19:21:04 C/C++开发

模板类的模板朋友功能

我正在为此问题(声明一个模板函数作为模板类的朋友),我相信第二个答案就是我想做的事(向前声明模板函数,然后将一个专业名称命名为朋友).我有一个疑问,就是稍微不同的解决方案实际上是正确的,还是恰好在Visual C ++ 2008中起作用. 测试代码为: #include // forward declarations template ..
发布时间:2020-06-15 19:21:01 C/C++开发

朋友声明的复杂范围规则有什么意义?

我最近发现,朋友声明的作用域遵循极其特殊的规则-如果您有friend声明(定义)对于尚未声明的函数或类,将在紧邻的名称空间中自动声明(定义),但是对于不合格和合格的查找是不可见的;但是,通过依赖于参数的查找,朋友的 function 声明仍然可见. struct M { friend void foo(); friend void bar(M); }; void baz() ..

Friend函数访问静态库中定义的类的私有成员

我有一个用C ++编写的静态库。我还可以获得静态库中定义的类的头文件。 我可以访问静态库中定义的类的私有成员,类声明? 解决方案 你的意思是你想改变库附带的头文件?无法保证在这里添加 friend 声明是可行的。即使你的编译器说它没问题,你可能会把链接部分搞乱。另外,如果那些成员是私人,你只是不访问它们。 ..
发布时间:2018-04-18 21:00:33 C/C++开发

错误C2248无法访问在类中声明的私有成员

我们在c ++中练习。老师给了我们在“类分配”的公共部分的功能(所以我不能改变header.h中函数的公开声明)。我有一个编译错误,当我试图做一个朋友cout函数:编译器说“错误4错误C2248:'biumath :: Assignment :: m_rowsOfVarArray':无法访问在'biumath :: Assignment'”中声明的私有成员。我认为问题在于命名空间。 bium ..
发布时间:2016-11-24 13:00:24 C/C++开发

从另一个模板类访问实例变量

(主要是从从其他类模板访问变量粘贴的)分隔两个问题) 我试图创建一个可以与数据加载器类一起使用的容器类系统从文本文件加载数据 这里是两类数据: class Customer { // ... }; class Tour { std :: vector保管 // ... }; 这是我的两个容器类: t ..
发布时间:2016-11-02 02:46:54 C/C++开发

如何只为一个特定的函数和类声明friend函数?

我的代码有什么问题? 我试图在GNU G ++环境中编译下面的代码,我得到这些错误: friend2.cpp:30:错误:无效使用不完整的类型'struct two' friend2.cpp:5:error: friend2.cpp:在成员函数'int two :: accessboth(one)': friend2.cpp:24:error:'int one :: dat ..
发布时间:2016-10-30 05:43:46 C/C++开发

为什么选择LNK1120& LNK2019出现在模板和朋友功能的情况下

我编译了第一个版本的代码在Turbo-C,它编译没有任何错误。但是当我在Visual Studio或普通的g ++从CommandLine编译这个,我得到的错误提到在帖子。 我在互联网上搜索过,并读了一些StackOverflow的问题& MSDN LNK1120问题文档。我找到了一种方法来修复下面的代码。但是,没有清楚的理由。如何只是一个定义摆脱那个错误。在语法上,错误倾向的代码也看起来很 ..
发布时间:2016-10-28 04:37:36 C/C++开发