问题标签 [pointer-to-member]

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 投票
7 回答
226 浏览

c++ - 指向成员的指针

在下面的代码中考虑语句:-“int B::*bpm;”

*何时在设计/代码中使用“指向成员的指针”来改进我的设计/编码实践。**

0 投票
6 回答
176 浏览

c++ - 成员指针函数列表

假设我有一堂课:

doSomething 所做的事情明确依赖于 A 实例的内部状态。

现在,我遇到了一种情况,我有一堆 A 类型的东西,但我只想从它们的严格子集中调用 doSomething,所以我想把它们放在列表中。特别是,我真正想做的是将指针指向列表中的单个 doSomethings() 。

我可以做吗? 我是否像这样声明它:

我读了这篇文章,这是有道理的,如果需要,我会走那条路。

0 投票
1 回答
2725 浏览

c++ - c++指针指向const类成员问题

我在使用 C++ 类时遇到了这个问题。我想获取指向myBar对象的指针并将其存储在quxBar. 原因是我希望能够检查使用的值,quxBar->getX()但我也想防止从 Qux 意外修改它,所以我尝试使用Bar const*.

不幸的是,它不起作用,因为我仍然能够在quxBar->setX(100)没有编译错误的情况下执行。

可能我的方法是完全错误的,但是使用当前的“技能”:) 我不知道如何解决它。

提前感谢您的任何帮助和建议。

0 投票
3 回答
4417 浏览

c++ - Qt4 C++ Pointer to const QList of pointers

我被指向 const 的指针卡住了QList of pointers to Foo。我将指针myListOfFooBar对象传递到Qux. 我使用指向 const 的指针来防止在Bar类之外进行任何更改。问题是我仍然可以ID_修改setIDQux::test().

上面代码的结果是:

我想要实现的是:

QList<Foo>当我使用代替时没有这样的问题,QList<Foo*>但我需要QList<Foo*>在我的代码中使用。

感谢帮助。

0 投票
1 回答
1161 浏览

c++ - 为什么我不能向下转换指向模板参数中成员的指针?

如果我创建一个指向基成员的指针,我通常可以将其转换为指向派生成员的指针,但在下面的 Buzz 之类的模板中使用时则不行,因为第一个模板参数会影响第二个模板参数。我是在与编译器错误作斗争,还是标准真的要求这不起作用?

0 投票
3 回答
562 浏览

c++ - 关于 C++ 运算符“地址”和“范围解析”优先级的问题

您好,我的代码存在编译器错误(错误来自 Microsoft Visual Studio 2008):

虽然此代码没有错误:

根据我对运算符优先级的了解,这两个片段在我看来是等效的,因为::它的优先级高于(例如,参见“用于系统开发和演示程序的联合攻击战斗机 C++ 编码标准&的第 137 页的表 2 )

但它们是不同的......我认为它与“指向数据成员的指针”有关,但我不知道它如何符合运算符优先级。

有什么解释吗?

0 投票
1 回答
239 浏览

c++ - 指向成员的 C++ 指针

如果我有两个在同一层次结构中且具有相同名称和类型的成员的类,那么创建指向基类变量的成员指针的“正确”方法是什么。前任。

在我的编译器(LLVM GCC)上,这将像我期望的那样打印 2,1,1。这引出了我的两个问题。

  1. 当涉及到 c++ 标准时,上述所有三个实现都是“安全的”吗?

  2. 如果是这样,是否有任何主流编译器与其中任何一个不兼容?

0 投票
3 回答
205 浏览

c++ - 以下代码在 c++ 中是什么意思?

&Dog::a指的是什么?

0 投票
2 回答
1746 浏览

c++ - 指向成员函数的指针的模板类型推导

在以下问题中,我遇到了与 Morpheus 提出的问题非常相似的问题:

重载的成员函数指针指向模板

Richard Corden 提出的解决方案要求用户显式指定函数参数类型,以区分重载。但是,此解决方案似乎不适用于具有不同数量的相同类型参数的重载。

考虑这个例子(源自原始问题):

GNU G++ 3.4.5 和 MSVC 2008 不编译上面的代码,两者都呈现类似的错误消息:

我知道一些可以使其编译的解决方法,例如将指针分配给完全相同类型的变量(例如void (GApp::*tmp)(double) = &GApp::foo;),或者在调用连接函数时使用更明确的形式(例如connect((void (GApp::*)(double))(&GApp::foo));)。

但是,我更喜欢第一个解决方案,并想知道它为什么不起作用。

先感谢您!

0 投票
2 回答
348 浏览

c++ - 成员函数指针 - 只有一个地址?

http://www.codeproject.com/KB/cpp/fastdelegate2.aspx

在上述文章介绍的第二段中,它说:“这是由于存储成员函数和进行成员函数调用的绑定对象所需的昂贵的堆内存分配。” ..我不明白吗?它实际上是否必须复制和存储对象和成员函数?不是只存储成员函数的地址吗?