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

c++ - 使用指向成员的指针时,如何通过范围解析运算符获取类成员的地址?

当使用指向成员的指针(AKA 点星或箭头星)来访问类成员时,我们可以使用以下语法:

我的问题是声明是如何&A::n工作的?

在上面的例子n中是一个变量。如果不是一个成员变量,而是n一个函数(并且我们定义了一个指向成员函数的指针而不是指向成员的指针),我可能会认为因为类的函数可以是有效的静态函数(参见Nemo 的评论),我们可以通过&A::some_function. 但是我们如何通过类作用域解析来获取非静态类成员的地址呢?当我打印 的值时,这更加令人困惑,&A::n因为输出仅仅是1.

0 投票
1 回答
172 浏览

c++ - 模板将运算符转换为指向成员函数语法的指针的工作原理

我正在查看nullptr 的模拟版本,并看到了这个转换运算符(nullptr_t 的成员):

这种指向成员函数的语法让我感到困惑。我通常希望看到这样的类型

使用上面的模板,没有输入参数。在这种情况下,我无法弄清楚类型推导是如何工作的。我很难形成一个特定的问题,除了,这是如何工作的?如果我有这样的代码:

我猜 T 推断为 int,而 C 推断为 MyClass。什么“发生”浮动?

0 投票
2 回答
119 浏览

c++ - C++中指向数据成员的指针的值

遇到一个很奇怪的问题,有人知道这是什么原因吗?代码在 Visual Studio 2012 下测试。

0 投票
5 回答
405 浏览

c++ - 指向成员的指针作为模板参数

我使用 Visual C++ 2012。我想用指向另一个函数的指针参数化模板函数。这一切都在课堂之外很好地工作:

Visual C++ 2012 完美地编译和优化了它。

现在,我将它放在一个类中,并针对指向成员的指针进行调整:

但这给了我一个编译器错误:

知道为什么以及如何解决它吗?

0 投票
1 回答
162 浏览

c++ - 无法从映射中恢复指向成员函数的指针

我的程序是评估和表征时间序列信息。数据可能有大约 90 个不同的信号。每个信号都有一个独特的公式和一组不同的参数和值。这段代码和我的问题是从配置文件中加载这些值。编译器是 VS 2010。

每个信号都由一个类表示,这里用 TRI{} 类进行说明,每个这样的类都派生自 SIGNAL{} 类。SIGNAL 包含一个静态映射(我的实际代码使用 unordered_map),它保存成对的信号名称和指向信号成员函数的指针,该函数将参数值分配给它们各自的变量。我的问题是操纵这个成员函数。

显然,信号成员函数的地址,在这段代码 &TRI::load_cfg_vals 中,永远不会存储在映射 sig_map 中。所以从调试器看来。当我尝试调用 TRI 信号的加载函数时,编译器说我正在尝试调用不是函数的东西。请查看我的一些失败尝试的代码。

我怎样才能让它与这些对象一起工作?我真的不知道问题是什么,更糟糕的是,我不知道我对如何使用 STL 或 C++ 不了解。

(我准备放弃了。我正在考虑另一种更类似于 C 的方法。使用映射,将每个信号名称与一个唯一的整数相关联(已经在实际代码中 - 它们都表示为唯一的单个bits). 将 void 指针数组的每个元素加载到该元素数组中的整数值是偏移量的信号的加载函数的地址。我选择的第一种方式,下面的代码,似乎更容易维护,更高级一点。)

在发布之前我研究的许多问题和答案中

成员函数指针和继承

字符串和成员函数指针的 C++ 映射

指向成员函数的 C++ 指针

C++ 使用来自 const 函数的映射调用指向成员的指针

TIA

0 投票
2 回答
80 浏览

c++ - How to assign a member function to a pointer to member function in C++

I'm trying to assign a member function to a pointer to a member function in C++, but I am getting an error. I have code like this:

and...

...

...

...

And on the lines

and

and

when I compile - I get the error:

I've searched - but I can't seem to find the solution to this problem - what is the correct syntax to assign a member function to the pointer to member function 'memPtr_'?

0 投票
1 回答
208 浏览

c++ - 指向成员函数声明/使用问题的可变模板指针

为什么可变参数模板版本不起作用?我错过了一些转发吗?

0 投票
1 回答
558 浏览

c++ - 指向类型名成员的指针

考虑一下:

为什么第二个失败,在一个 typedef 语句中获得所需 typedef 的正确方法是什么?

我的编译器是 GCC-4.7.2。

0 投票
2 回答
1193 浏览

c# - C# 和指向成员的指针

需要为某种类型的对象调用函数,但我希望调用者指定我调用的函数。

在 C++ 中,我可以像这样使用指向成员的指针

是否有任何 C# 等价物?

请不要使用功能数组或任何技巧,例如开关。即使在功能签名满足要求的情况下添加了新功能,我也希望此解决方案能够正常工作。

编辑:正如我所读到的:委托就像 C++ 函数指针,但类型安全。

但我需要成员函数指针。例如,在我的函数中,我获得了确定的对象:

现在需要获取某些类型的属性:

但我需要这样的东西

获取此函数调用的用户请求类型。TypeX 必须是什么?

Type1..N 有共同的基类,我需要使用这个类。

0 投票
2 回答
152 浏览

c++ - 在指向成员的指针和指向常量成员的指针之间转换

我试过搜索这个,但我想到的每个术语最终都会得到完全不相关的结果。

我有一个将指向成员的指针作为参数的函数(模板),但我似乎无法隐式地将指向的成员视为 const。使用 const_cast 有效,但如果可以的话,我想避免显式调用它。

这是一个简化的示例,演示了我在使用更复杂的类树时遇到的问题。我试图避免强制转换,因为调用代码(例如,使用类模板的人)需要它。


更新:当我第一次发布这个时,我不小心使用了一个没有产生相同错误的代码示例。我花了相当多的测试来确定根本原因,即我在模板参数中添加了 const 限定符。上面的示例现在正确地演示了我正在使用的行为。