问题标签 [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.
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 属性。现在,我不会落入指责工具的陷阱,那么这里有什么?任何人?
c++ - 友情和派生类
假设我有以下类层次结构:
我想我也可以改变它,a->Base::foo()
但由于foo()
在课堂上是纯虚拟的,所以无论如何Base
调用都会导致调用。Derived::foo()
但是,编译器似乎拒绝a->foo()
. 我想这是合乎逻辑的,但我真的不明白为什么。我错过了什么吗?它不能(不应该)处理这种特殊情况吗?
谢谢你。
c++ - C++中的友元声明
在 Bruce eckel 的 Thinking in C++ 中,有一个关于友元函数的示例
现在他解释了这一点:
请注意,Y::f(X*) 采用 X 对象的地址。这一点很关键,因为编译器总是知道如何传递一个地址,不管传递的对象是什么,这个地址都是固定大小的,即使它没有关于类型大小的完整信息。但是,如果您尝试传递整个对象,编译器必须先查看 X 的整个结构定义,以了解大小以及如何传递它,然后才能允许您声明诸如 Y::g(X) 之类的函数。
但是当我尝试
作为 struct Y 中的声明,它没有显示错误。请解释为什么?
vb.net - VB.NET:“朋友”修饰符有什么作用?
'friend' 修饰符在 VB.NET 中有什么作用?
为什么它是 Visual Studio 中 GUI 组件的默认修饰符?
vb.net - 为 VB.NET 项目设置项目默认值,以便控件的默认修饰符属性为 Private
是否可以为 VB.NET winforms 项目设置项目默认值,以便添加到 winforms 的控件的默认修饰符是 Private(不是 Friend)?
我知道属性窗口中有一个“修饰符”属性,因此我可以为每个单独的控件设置它......但是我想更改项目,所以从现在开始我自己和其他开发人员必须特别决定从 private 更改。(我强烈反对他们这样做)。
我相信没有办法做到这一点,但不久前在另一个论坛上有人提到它可以使用加载项(但没有命名加载项或从哪里获得它)。
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() 是无效的语法?
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
c++ - C++ 朋友类 std::vector
是否可以便携地执行以下操作:
上面尝试编译的示例消息:
谢谢
我确实有解决方法,但我很好奇这怎么可能
php - 有没有一种简单的方法可以在 php 5.3 中模拟友谊
我需要一些课程来与我系统中的其他课程交朋友。缺少此功能使我公开了一些不应该公开的方法。其后果是我的团队成员以一种糟糕且丑陋的方式实现代码,从而导致混乱。
有没有办法在 php 5.3 中定义友谊?
(我知道http://bugs.php.net/bug.php?id=34044如果没有简单的解决方案,您可能想在那里投票)。
c++ - 朋友,模板,重载<<
我正在尝试使用友元函数来重载 << 和模板以熟悉模板。我不知道这些编译错误是什么:
对于这个文件
我的标题看起来像:
我的标题也给出了警告:
我也不确定为什么。有什么想法吗?谢谢。