问题标签 [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++指向成员函数的指针,替换__closure
前段时间,Borland 在他们的 BCB 环境中引入了对 C++ 语言的扩展。这个扩展是一个 __closure 关键字。问题是,是否可以在纯 C++ 或 C++11 中实现这样的功能?如果您不熟悉 __closure 关键字,下面的代码会在注释中提供解释。
提前致谢!托雷诺
c++ - 从成员指针获取指向封闭实例的指针
我有一个包含一些数据成员的自定义类。我有一个指向该类的数据成员之一的指针,我想要一个指向其封闭实例的指针。例如:
该类不是 POD 类型,因此 offsetof 宏并不总是有效/它会给出编译警告。
是否可以获得指向 MyClass 实例的指针?
c++ - C++中虚函数指针的比较
假设我想检查一个子类是否已经实现了它的父类的一个虚函数(不管这是否有坏架构的味道......这是一个练习)。如果我想看看两个常规函数是否相同,我可以检查&f == &g
.
但是对于虚拟成员函数,行为是不同的。
所以我的问题在上面的代码中被标记了DANGER
。为什么&A::f == &B::f
如果&f != &g
?有没有办法在不强制转换的情况下进行我想要的比较void*
(这会发出嘈杂的编译器警告-Wpmf-conversions
)?
c++ - 具有单个参数模板的成员函数包装器?
我制作了一个模板函数,它以成员函数作为参数。
但是,由于必须先声明该类,然后才能将其用作成员函数参数的一部分,因此我必须将其设为单独的参数:
这意味着当显式实例化模板时(我希望在编译时生成这些包装器,而不是将成员指针作为参数传递)我必须在使用它时输入两次:
为什么我不能只写类似 tis 的东西:
并让它捕获 C 的类型及其成员函数指针而不必键入 SomeClass 两次?
或者为什么我不能将它包装在一个将 C 声明为“自由变量”的外部模板中,然后有一个内部模板参数来执行推论
c++ - 如何允许使用私有成员指针作为模板参数?
我有一个User
派生自基类 ( ) 的类(在下面的示例中)Base
,将第三类类型 ( Used
) 和该类中的成员指针作为模板参数传递给基类。
我需要在内部做Used
什么(即我需要交朋友)以使指向的数据成员可以是私有的?
编辑:鉴于这似乎适用于较新版本的 GCC,我该如何解决给定 g++ 4.8.4 的问题?
c++ - 反转指向数据成员的指针
嗨,我想弄清楚计算类成员的偏移量(以反转它)是否合法(通过 C++)标准。
成为一个&(parent_p->*offset)
C ++ 是否合法?parent_p
nullptr
c++11 - 带有指向成员函数的指针的 glutDisplayFunc()
我有一个 C++ 类,其中包含我想传递给 glutDisplayFunc() 的绘制函数。glutDisplayFunc 将函数指针 (void (*)() ) 作为其参数。我努力了 :
编译器无法将 std::function 指针转换为所需的。我怎样才能绕过这个成员函数指针的障碍?
c++ - 取消引用成员指针
我正在实现一个双向链表,当我尝试访问由成员指针指向的对象的成员名时,我遇到了段错误。我的链表由节点组成,节点有一个值和一个下一个和上一个指针
字符串(这是上一个项目的基本实现):
节点(我知道这并没有实现“三巨头”,我宁愿把这个类保持在最低限度):
双向链表:
主要的:
任何帮助表示赞赏!
c++ - c ++将派生类的成员指针转换为基类指针
我目前正在使用 HttpServer 并遇到以下问题:
我想注册我的控制器,当我收到请求时,我想检查其中一个控制器是否具有请求的 URL 的处理程序,然后调用该处理程序。
到目前为止一切顺利,但我不知道如何用 C++ 解决它,在 PHP 中它会很容易。
在 Easteregg 控制器函数 getControllerCallbacks 中,我想返回可用的回调,但它不会编译,因为我无法将派生类的成员函数指针转换为基类 (Controller) 的成员函数指针 (EastereggController)。我曾考虑将 ControllerCallback 设为“模板类”,但随后我必须知道 ControllerHandler 中的 Controller 类,我不知道,因为我有一个 std::vector
我对 C++ 很陌生,也许我忽略了一些东西。
这是我现在的代码:
控制器.h
EastereggController.h
EastereggController.cpp
控制器回调.h
控制器处理程序.h
控制器处理程序.cpp
c++11 - 关于指向数据成员的静态常量指针的语法
假设有一个类有几个数据成员,例如:
如果我需要一个指向成员的 const 指针,这很简单:
如果我尝试创建相同类型的静态成员,就会开始发生一些奇怪的事情......
例如,这会导致编译器出现段错误(gcc 4.9.3):
将其用作不同类的静态成员至少完成编译:
我不明白的最后一个错误,不是&s::c
constexpr 吗?
我确实有办法让它工作,例如:
但出于几个原因,这是不可取的:
auto
只能在定义中使用,如果在类之外初始化,则必须声明类型。- 显式声明类型意味着重复类型或重复成员名称(as
decltype(s::c)
) - 保持相同名称的更多位置 = 可能出现更多错误。 - 对于专门的类模板,上述内容更加令人讨厌,对于每个专业化,这需要在类内部和外部完成。
从这里我有一个两部分的问题。
1.为什么不是&s::c
? constexpr
有没有办法让它成为一个?
2.有没有办法指定一个静态成员,它是指向另一个类成员的固定指针,类型自动确定,而不诉诸于decltype
?
我作为成员尝试过这个struct s
并得到相同的错误(需要 constexpr):
所以我不知道编译器对这种语法的问题是什么,这对我来说没有意义,为什么对数据成员的引用(不是实例成员引用)在编译时不是常量.