问题标签 [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 投票
4 回答
4948 浏览

c++ - 如何在 C++ 中将成员变量指针转换为泛型类型

我的应用程序中有类似的代码:

问题是 - MYSTERYTYPE 应该是什么?void* 和 int 都不起作用,尽管如果通过 printf 输出值 &A::b 就可以正常打印。

澄清:是的,&A::b 是在 C++ 下定义的。是的,我正在尝试将偏移量分配给班级成员。是的,我很棘手。

编辑:哦,我可以使用 offsetof()。不管怎么说,还是要谢谢你。

0 投票
2 回答
449 浏览

c++ - 在 C++ 中有 &func 或 class::func 的用途吗?

这似乎不一致。为什么我们使用 &Example::func 而不是 Example::func?Example::func 或 &exampleFunction 有没有用处?似乎我们不能引用一个函数,以便排除 Example::func。而且我想不出一种使用 &exampleFunction 的方法,因为 exampleFunction 已经返回了一个指针。

0 投票
1 回答
148 浏览

c++ - 将成员指针分配给构造函数初始化程序中另一个成员的地址是标准的 C++ 吗?

这符合标准吗?

0 投票
3 回答
836 浏览

c++ - 返回相同类型的成员函数指针的成员函数指针

我想在 C++ 中声明一个成员函数指针,它返回相同的成员函数指针类型

这不起作用:

有人知道解决方案吗?

0 投票
8 回答
1543 浏览

c++ - 嵌套数据成员指针 - 不可能?

以下简化的代码示例没有做任何有用的事情,只是对数据成员指针进行了两次后续分配。第一个赋值有效,第二个给出编译器错误。大概是因为它是嵌套成员。

问题是:真的不可能让一个成员指针指向一个嵌套成员,还是我错过了任何花哨的语法?

ATM 我正在​​通过使用字节偏移和大量强制转换来解决问题。但这很难看,我最好使用那些成员指针。

是的,我知道这个问题之前肯定出现过(就像几乎所有问题一样)。是的,我事先搜索过,但没有找到满意的答案。

谢谢你的时间。

0 投票
1 回答
906 浏览

c++ - 基类成员的指针类型

我对成员指针有疑问。以下代码无法同时使用 Oracle Solaris Studio 12.2 的 CC 和 cygwin GCC 4.3.4 进行编译,但适用于 Microsoft Visual C++ 2010:

在最后一行的下一行,上面提到的两个编译器都找不到匹配的Bar<B>::foo(int A::*). 我写了一个简单的测试来确认表达式的类型&B::x实际上是int A::*

以下变通方法适用于 GCC(尚未使用 Oracle CC 测试),但由于含糊不清而在 VC++ 中失败:

我的问题:哪种行为是正确的?显然 VC++ 做了一个隐式向上转换 from int A::*toint B::*来满足对成员函数模板的调用,其他两个编译器不应该考虑做同样的事情吗?

0 投票
1 回答
2501 浏览

c++ - 成员函数指针

如果 C++ FAQ Lite 中的以下内容为真:“函数名衰减为指向函数的指针”(因为数组名衰减为指向其第一个元素的指针);为什么我们必须包括&符号?

而不仅仅是:

在第二种情况下,Fred::f 是一个函数,可以衰减为指向该函数的指针。

我希望这个问题不是那么愚蠢。

0 投票
4 回答
5133 浏览

c++ - 指向成员的指针的偏移量

在这种情况下,如何获取字段“m”的偏移量?我更喜欢使用 am 编译时表达式。

提前感谢您的帮助。此致

0 投票
9 回答
359 浏览

c++ - 我可以将成员数据指针分配给派生类型吗?

这可能最好用示例代码来展示。以下无法使用 g++ 编译:

我收到以下错误:invalid conversion from 'Derived Container::*' to Base Container::*'。这是语言不允许的吗?这是编译器错误吗?我使用了错误的语法吗?

请帮忙!

关于我为什么要这样做的一些背景知识:我有几个成员数据片段,我想主要用作它们的派生类型,但我希望能够通过一些通用代码填充它们。数据将以任意顺序出现,并具有一个字符串标签,我将使用它来选择要填充的适当成员数据。我正计划创建一个std::map<std::string, Base Container::*>通过通用接口将数据分配给每个成员的方法。我想避免有一个巨大的if else结构来找到正确的成员数据。

0 投票
3 回答
568 浏览

c++ - 具有私有基数的函数成员指针

以下代码产生编译时错误:

base::print” : 无法访问在类“ base_der”中声明的私有成员

但是,我已经public在派生类中创建了成员。为什么这不起作用?