![]() |
1
2
这里的目标似乎是,在拥有一个有效的CBar之前,你不可能拥有一个CFoo。 使用C#可以实现同样的效果,方法是为CFoo创建一个私有构造函数,然后在CFoo中创建一个静态方法,该方法接受CBar参数并调用该构造函数并返回新的CFoo。 这类似于System.Drawing.Graphics.FromImage(图像图像)方法。 为什么C#没有friend关键字的问题已经被讨论过了 elsewhere . |
![]() |
2
1
在C#中,根据类的使用方式,可以在另一个类的范围内定义一个类。
|
![]() |
3
1
您可以查看标记CFoo内部
|
![]() |
4
0
|
![]() |
5
0
为了帮助思考它是否愚蠢,你能提供更具体的例子说明这些类是什么吗? 我想说的是,在没有充分理由的情况下使用friend对我来说有点奇怪……在C#中,你有汇编这样的东西,所以你可以使用内部构造函数或私有构造函数,以及几种具有不同访问权限的静态创建方法(受保护的、公共的、内部的…) |
![]() |
6
0
首先,朋友声明在错误的类中。CFoo需要成为CBar的朋友,以便CBar能够访问其私人成员。 第二,是的,一般来说,这应该避免。类应该很少关心如何/在何处使用它们。如果他们这样做了,那么该功能可能应该以不同的方式分解。 |
![]() |
7
0
只需把课堂保密。这只是将范围限制在dll(exe等)上。没有什么比C#中的朋友声明更酷的了,但是Marcin说得对,你应该重新考虑这样的设计。如果您确实需要“friend”支持,您可以在运行时使用反射来模拟它。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |