问题标签 [member-pointers]
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 ++模板和带有方法指针的继承
如果我声明:
我试着
编译器报告我
为什么?避免继承自
然后避免是模式<.....>
c++ - 编译错误:未解决的重载函数类型
我尝试使用 g++ 4.7.2 编译以下内容:
它给了我
为什么?
谢谢。
c++ - C++ 指向成员成员的指针
如果成员指针的推理链是到达内部成员的唯一解决方案,我可以使用模板将其封装在单一类型上吗?
现在代码可以用gcc编译了
谢谢大家
c++ - 将指针和成员指针加入函数指针
请考虑这样的代码:
我应该如何完成此代码才能func_ptr(...)
调用 MyFunc *class_ptr
?
如果可能的话,我很想以某种方式将 aMyClass*
和 a加入void (Myclass::*)(int)
到 avoid (*)(int)
中。
如果没有,我希望巧妙地使用std::mem_fn
and std::function
(或其他功能实用程序)可能会成功。
理想情况下,我想要一个 C++11 解决方案(因为std::mem_fun
现在不推荐使用 eg)。
c++ - C++,如何找到成员函数的地址?
我有一个要解决的特定问题,我需要找到类方法的位置(在内存中)。我认为我遇到了语法约束,因为指向方法的指针作为member pointer
示例处理:
int (Foo::*address)(int) =
也可以写成 auto address =
现在,在 VS2008 中,它说Foo::targetFunction
的地址是“0x000F B890”但是&Foo::targetFunction
是“ 0x000F 1762 ”
首先,成员指针使用成员指针运算符.*
和->*
. 如果我将 targetAddress 转换回成员指针,它仍然有效!
第二,定位可以是一个thunk函数!
最后,如果我使用 VS2008 的调试器将 targetFunction 的值从member pointer
的地址 1762 更改为 VS 调试器报告的值 B890,我的代码可以正常工作!
是否有特定于 C++ 的方法来获取地址值(B890)而不是成员指针值(1762)?
根据要求,这是我正在尝试制作的代码:
如果我将第一行findLocation
从 a替换member pointer
为实际的function pointer
,它就可以完美地工作。但是,我还需要读写几个类方法,这个方法被奇数member pointer
s 破坏了。
此外,我有一些本地函数也没有报告正确的地址(最近)。是否有另一种方法可以在不受编译器行为约束的情况下找到函数地址?
c++ - C++转换:有指向对象成员的指针,计算指向对象的指针
C++ 必须static_cast
转换base_class_pointer
为derived_class_pointer
.
object_data_member_pointer
转换为 的操作非常相似object_pointer
。
ConvertDataMemberPtrToObjectPtr
我使用不安全的 C 类型转换编写了该函数。
- 如何以安全的方式做到这一点?成员的链接必须指定为模板参数
member_ptr
。 - 如果您使用这样的实现,是否会出现任何问题?
资源:
使用父母而不是成员和static_cast
:
c++ - 我可以编写指向成员的指针吗
我想编写成员指针。基本上我有一个不同成员的主类。如何为指向该类成员的成员的主类创建成员指针。我希望下面的代码解释了我正在尝试做的事情:
c - 如何访问 C 中结构内的指针成员?
如何访问结构成员“al”和联合成员 a、c、f?
c++ - 对 C++ 中类成员的意义感到困惑
三类如下:
输出结果为0 0 0 0 8 2
。&Derive::var1
我对and的结果感到困惑&Derive::var2
。为什么它们都相等0
而不是0
和4
分别?
注意:我用gcc4.7.1和vs2010测试过。结果是一样的。
c++ - 为什么不允许从 VirtualBase::* 转换为 Derived::*?
昨天,我和我的同事不确定为什么语言禁止这种转换
甚至演员表都没有帮助。如果基成员指针是虚拟基类,为什么标准不支持将基成员指针转换为派生成员指针?
相关C++标准参考:
“指向
B
cv 类型成员的指针”类型的纯右值T
,其中B
是类类型,可以转换为“指向D
cv 类型成员的指针”类型的纯右值T
,其中D
是 的派生类(第 10 条)B
。如果B
是 的不可访问(第 11 条)、模棱两可 (10.2) 或虚拟 (10.1) 基类D
,或 的虚拟基类的基类D
,则需要进行此转换的程序格式错误。
函数和数据成员指针都会受到影响。