问题标签 [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.

0 投票
2 回答
2122 浏览

c++ - c++指向成员函数的指针,替换__closure

前段时间,Borland 在他们的 BCB 环境中引入了对 C++ 语言的扩展。这个扩展是一个 __closure 关键字。问题是,是否可以在纯 C++ 或 C++11 中实现这样的功能?如果您不熟悉 __closure 关键字,下面的代码会在注释中提供解释。

提前致谢!托雷诺

0 投票
3 回答
233 浏览

c++ - 从成员指针获取指向封闭实例的指针

我有一个包含一些数据成员的自定义类。我有一个指向该类的数据成员之一的指针,我想要一个指向其封闭实例的指针。例如:

该类不是 POD 类型,因此 offsetof 宏并不总是有效/它会给出编译警告。

是否可以获得指向 MyClass 实例的指针?

0 投票
0 回答
394 浏览

c++ - C++中虚函数指针的比较

假设我想检查一个子类是否已经实现了它的父类的一个虚函数(不管这是否有坏架构的味道......这是一个练习)。如果我想看看两个常规函数是否相同,我可以检查&f == &g.

但是对于虚拟成员函数,行为是不同的。

所以我的问题在上面的代码中被标记了DANGER。为什么&A::f == &B::f如果&f != &g?有没有办法在不强制转换的情况下进行我想要的比较void*(这会发出嘈杂的编译器警告-Wpmf-conversions)?

0 投票
2 回答
687 浏览

c++ - 具有单个参数模板的成员函数包装器?

我制作了一个模板函数,它以成员函数作为参数。

但是,由于必须先声明该类,然后才能将其用作成员函数参数的一部分,因此我必须将其设为单独的参数:

这意味着当显式实例化模板时(我希望在编译时生成这些包装器,而不是将成员指针作为参数传递)我必须在使用它时输入两次:

为什么我不能只写类似 tis 的东西:

并让它捕获 C 的类型及其成员函数指针而不必键入 SomeClass 两次?

或者为什么我不能将它包装在一个将 C 声明为“自由变量”的外部模板中,然后有一个内部模板参数来执行推论

0 投票
0 回答
173 浏览

c++ - 如何允许使用私有成员指针作为模板参数?

我有一个User派生自基类 ( ) 的类(在下面的示例中)Base,将第三类类型 ( Used) 和该类中的成员指针作为模板参数传递给基类。

我需要在内部做Used什么(即我需要交朋友)以使指向的数据成员可以是私有的?

(不)Ideone 上的工作示例

编辑:鉴于这似乎适用于较新版本的 GCC,我该如何解决给定 g++ 4.8.4 的问题?

0 投票
1 回答
153 浏览

c++ - 反转指向数据成员的指针

嗨,我想弄清楚计算类成员的偏移量(以反转它)是否合法(通过 C++)标准。

成为一个&(parent_p->*offset)C ++ 是否合法?parent_pnullptr

0 投票
1 回答
5488 浏览

c++11 - 带有指向成员函数的指针的 glutDisplayFunc()

我有一个 C++ 类,其中包含我想传递给 glutDisplayFunc() 的绘制函数。glutDisplayFunc 将函数指针 (void (*)() ) 作为其参数。我努力了 :

编译器无法将 std::function 指针转换为所需的。我怎样才能绕过这个成员函数指针的障碍?

0 投票
1 回答
270 浏览

c++ - 取消引用成员指针

我正在实现一个双向链表,当我尝试访问由成员指针指向的对象的成员名时,我遇到了段错误。我的链表由节点组成,节点有一个值和一个下一个和上一个指针

字符串(这是上一个项目的基本实现):

节点(我知道这并没有实现“三巨头”,我宁愿把这个类保持在最低限度):

双向链表:

主要的:

任何帮助表示赞赏!

0 投票
1 回答
228 浏览

c++ - c ++将派生类的成员指针转换为基类指针

我目前正在使用 HttpServer 并遇到以下问题:

我想注册我的控制器,当我收到请求时,我想检查其中一个控制器是否具有请求的 URL 的处理程序,然后调用该处理程序。

到目前为止一切顺利,但我不知道如何用 C++ 解决它,在 PHP 中它会很容易。

在 Easteregg 控制器函数 getControllerCallbacks 中,我想返回可用的回调,但它不会编译,因为我无法将派生类的成员函数指针转换为基类 (Controller) 的成员函数指针 (EastereggController)。我曾考虑将 ControllerCallback 设为“模板类”,但随后我必须知道 ControllerHandler 中的 Controller 类,我不知道,因为我有一个 std::vector

我对 C++ 很陌生,也许我忽略了一些东西。

这是我现在的代码:

控制器.h

EastereggController.h

EastereggController.cpp

控制器回调.h

控制器处理程序.h

控制器处理程序.cpp

0 投票
0 回答
65 浏览

c++11 - 关于指向数据成员的静态常量指针的语法

假设有一个类有几个数据成员,例如:

如果我需要一个指向成员的 const 指针,这很简单:

如果我尝试创建相同类型的静态成员,就会开始发生一些奇怪的事情......

例如,这会导致编译器出现段错误(gcc 4.9.3):

将其用作不同类的静态成员至少完成编译:

我不明白的最后一个错误,不是&s::cconstexpr 吗?

我确实有办法让它工作,例如:

但出于几个原因,这是不可取的:

  1. auto只能在定义中使用,如果在类之外初始化,则必须声明类型。
  2. 显式声明类型意味着重复类型或重复成员名称(as decltype(s::c)) - 保持相同名称的更多位置 = 可能出现更多错误。
  3. 对于专门的类模板,上述内容更加令人讨厌,对于每个专业化,这需要在类内部和外部完成。

从这里我有一个两部分的问题。

1.为什么不是&s::c? constexpr有没有办法让它成为一个?

2.有没有办法指定一个静态成员,它是指向另一个类成员的固定指针,类型自动确定,而不诉诸于decltype

我作为成员尝试过这个struct s并得到相同的错误(需要 constexpr):

所以我不知道编译器对这种语法的问题是什么,这对我来说没有意义,为什么对数据成员的引用(不是实例成员引用)在编译时不是常量.