问题标签 [friend]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5798 浏览

c# - C# 中的友元程序集

我正在尝试使用 [InternalsVisibleTo()] 属性创建一些“朋友程序集”,但我似乎无法让它工作。我已按照 Microsoft 的说明创建已签名的朋友程序集,但我看不出哪里出错了。所以我会在这里详细说明我的步骤,希望有人能发现我故意的错误......?

创建一个强名称密钥并提取公钥,因此:

sn -k StrongNameKey
sn -p public.pk
sn -tp public.pk

将强名称密钥添加到每个项目并启用签名。

创建一个名为Internals的项目和一个具有内部属性的类:

创建另一个名为 TestInternalsVisibleTo 的项目:

编辑 Internals 项目的 AssemblyInfo.cs 文件,并添加必要的属性:

最后……建造!

我收到以下错误:

错误 CS0122:“Internals.ClassWithInternals”由于其保护级别而无法访问
错误 CS1729:“Internals.ClassWithInternals”不包含采用 1 个参数的构造函数找不到接受“Internals.ClassWithInternals”类型的第一个参数的扩展方法“Message”(您是否缺少 using 指令或程序集引用?)

基本上,就好像我没有使用 InternalsVisibleTo 属性。现在,我不会落入指责工具的陷阱,那么这里有什么?任何人?

0 投票
5 回答
2428 浏览

c++ - 友情和派生类

假设我有以下类层次结构:

我想我也可以改变它,a->Base::foo()但由于foo()在课堂上是纯虚拟的,所以无论如何Base调用都会导致调用。Derived::foo()

但是,编译器似乎拒绝a->foo(). 我想这是合乎逻辑的,但我真的不明白为什么。我错过了什么吗?它不能(不应该)处理这种特殊情况吗?

谢谢你。

0 投票
3 回答
779 浏览

c++ - C++中的友元声明

在 Bruce eckel 的 Thinking in C++ 中,有一个关于友元函数的示例

现在他解释了这一点:

请注意,Y::f(X*) 采用 X 对象的地址。这一点很关键,因为编译器总是知道如何传递一个地址,不管传递的对象是什么,这个地址都是固定大小的,即使它没有关于类型大小的完整信息。但是,如果您尝试传递整个对象,编译器必须先查看 X 的整个结构定义,以了解大小以及如何传递它,然后才能允许您声明诸如 Y::g(X) 之类的函数。

但是当我尝试

作为 struct Y 中的声明,它没有显示错误。请解释为什么?

0 投票
2 回答
19959 浏览

vb.net - VB.NET:“朋友”修饰符有什么作用?

'friend' 修饰符在 VB.NET 中有什么作用?

为什么它是 Visual Studio 中 GUI 组件的默认修饰符?

0 投票
1 回答
651 浏览

vb.net - 为 VB.NET 项目设置项目默认值,以便控件的默认修饰符属性为 Private

是否可以为 VB.NET winforms 项目设置项目默认值,以便添加到 winforms 的控件的默认修饰符是 Private(不是 Friend)?

我知道属性窗口中有一个“修饰符”属性,因此我可以为每个单独的控件设置它......但是我想更改项目,所以从现在开始我自己和其他开发人员必须特别决定从 private 更改。(我强烈反对他们这样做)。

我相信没有办法做到这一点,但不久前在另一个论坛上有人提到它可以使用加载项(但没有命名加载项或从哪里获得它)。

0 投票
4 回答
1619 浏览

c++ - 如何与模板类的构造函数交朋友?

为什么

导致

../src/main.cpp:15:错误:无效使用构造函数作为模板
../src/main.cpp:15:注意:使用'B::B'而不是'B::class B'以限定名称命名构造函数

但改变friend B<int>::B<int>()friend B<int>::B()结果

../src/main.cpp:15: 错误:没有在类'B'中声明的'void B::B()'成员函数</p>

同时完全删除模板

编译和执行都很好——尽管我的 IDE 说朋友 B::B() 是无效的语法?

0 投票
3 回答
75012 浏览

c++ - “朋友”函数和 << 运算符重载:为类重载运算符的正确方法是什么?

在我正在进行的一个项目中,我有一个Score类,在下面定义score.h。我试图重载它,因此,当<<对其执行操作时,_points + " " + _name会打印出来。

这是我试图做的:

以下是返回的错误:

(这个错误实际上出现了 4 次)

我设法通过将重载声明为友元函数来使其工作:

Score::从 score.cpp 中的函数声明中删除(实际上没有将其声明为成员)。

为什么这行得通,而前一段代码却行不通?

谢谢你的时间!

编辑

我删除了对头文件重载的所有提及...但是我收到以下(也是唯一的)错误。binary '<<' : no operator found which takes a right-hand operand of type 'Score' (or there is no acceptable conversion) 为什么我的测试在 main() 中找不到合适的重载?(这不是包含,我检查过)

下面是完整的分数.h

0 投票
1 回答
2360 浏览

c++ - C++ 朋友类 std::vector

是否可以便携地执行以下操作:

上面尝试编译的示例消息:

谢谢

我确实有解决方法,但我很好奇这怎么可能

0 投票
3 回答
302 浏览

php - 有没有一种简单的方法可以在 php 5.3 中模拟友谊

我需要一些课程来与我系统中的其他课程交朋友。缺少此功能使我公开了一些不应该公开的方法。其后果是我的团队成员以一种糟糕且丑陋的方式实现代码,从而导致混乱。

有没有办法在 php 5.3 中定义友谊?

(我知道http://bugs.php.net/bug.php?id=34044如果没有简单的解决方案,您可能想在那里投票)。

0 投票
3 回答
979 浏览

c++ - 朋友,模板,重载<<

我正在尝试使用友元函数来重载 << 和模板以熟悉模板。我不知道这些编译错误是什么:

对于这个文件

我的标题看起来像:

我的标题也给出了警告:

我也不确定为什么。有什么想法吗?谢谢。