问题标签 [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 回答
670 浏览

c++ - 从指向成员的指针的类模板推导

作为类模板参数之一,我需要使用指向成员的指针:

这需要用作

但我想这样使用它:

成员类型是从成员指针推导出来的。我不能使用函数模板,因为MemPtrTest该类不应该被实例化(只会使用一些静态函数)。有没有办法在纯 C++03(没有 Boost 或 TR1)中做到这一点?

0 投票
1 回答
609 浏览

c++ - 无法推断出模板参数和指向成员的指针

我在使用 Visual C++ 时遇到 C2783 错误(无法推断模板参数),我有以下测试用例:

注释行时

并取消注释下面的行,代码编译。

我不明白为什么,因为对我来说 'helper::add' 的第二个参数仍然是一样的......

感谢帮助。

0 投票
2 回答
207 浏览

c++ - 使用成员函数作为模板参数时的c ++编译错误

我正在尝试将成员函数指针作为模板参数传递。这是代码:

这是我得到的错误:

据我所知,指向成员函数的指针是有效的模板参数。我不明白前面的代码有什么问题。我使用的编译器是 Ubuntu 下的 g++ 4.5.2。

提前致谢。

更新:

似乎代码应该是错误的,因为mptr它是运行时变量。另一方面,前面的代码摘录编译:

http://ideone.com/cv8pq

所以……对吗?它取决于编译器吗?

0 投票
3 回答
2807 浏览

c++ - 访问类内的函数指针

我在类中定义函数指针并尝试通过类的实例访问它,但它显示错误。

这是代码:

它显示编译时错误:

请帮我。

先感谢您。

0 投票
6 回答
6308 浏览

c++ - 动态创建调用给定实例上的方法的函数指针

我怀疑这是不可能的,但我想我会问。假设我有一个带有方法的类:

我可以创建一个指向该成员函数的指针:

我还可以滥用函数指针并创建一个A直接接受参数的指针(我不知道这是否安全,但它适用于我的机器):

想要的是以某种方式对参数进行curry A,并创建一个函数指针,它只接受一个,但在我预定义的特定实例上int调用该方法。对于那个特定的函数指针,实例将保持不变,但可能有几个函数指针都指向同一个方法,但使用不同的实例。例如,我可以制作一个单独的包装函数:A::bAAA::bA

现在我可以ptr3在不知道A将调用发送到哪个特定对象的情况下使用它,但我必须定义一个特殊的函数来处理它。我需要一种方法来为任意数量的A实例创建指针,所以我不能像那样对其进行硬编码。这有可能吗?


编辑:应该提到,我被困在 C++03 领域,也不能使用 Boost

0 投票
3 回答
1260 浏览

c++ - 专门针对指向数据成员的指针的模板成员函数

我想定义一个空值静态模板成员函数,该函数将(明确)专门用于指向数据成员的指针,并且对于每个专门化,可以具有不同的返回类型。

它应该返回有关每个属性的一些详细信息,因此我将调用此方法trait。返回的特征对象类型将被其他模板检查,因此整个机器必须在编译时可用。

到目前为止,我有这样的东西(当然是坏代码):

可以得到一些关于如何实现这一目标的提示吗?(我并不是想发明一个新的序列化系统,我已经使用了 boost::serialization;每个特征中都会有更多信息,这只是一个示例,为什么在编译时需要它)。

编辑:我能够得到接近我想要的东西,它显示在 ideone.com 上。我放弃了trait<Foo::a>()(现在),所以有一个静态函数getTrait_a()返回对可修改类型特征的引用,但是在编译时部分固定(Foo::TraitType_a::flags例如,这样可以工作)。感谢所有回答的人,不幸的是我只能选择其中一个答案作为“答案”。

0 投票
1 回答
361 浏览

c++ - 模板类、继承和指向成员函数的指针的编译器错误

他们有什么方法可以克服这个错误。我想通过填充函数并避免重复代码的代码气味。

0 投票
4 回答
15240 浏览

c++ - 如何在 C++ 中打印成员函数地址

看起来std::cout无法打印成员函数的地址,例如:

结果是这样的:

如何MyFunc使用 打印地址std::cout

0 投票
1 回答
4127 浏览

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

我想将指向成员的指针作为 foo1 的模板参数。这是代码:

那么它应该是什么样子呢?

0 投票
2 回答
2083 浏览

c# - 将指向成员的 C++ 指针转换为 C#

我一直在研究如何成功地将 C++ 指向成员的指针转换为 C#,但我还没有发现任何有用的东西。假设我有这个功能。

我通过研究了解到 ->* 是指向成员的指针。在这种情况下,我们在一个名为 STRUCT 的结构中发送一个成员变量的指针。由于 Method 不确定哪个成员作为参数发送,它通过指向成员的指针 sampleStruct->*pMember 访问它。

我认为Reflection可以帮助将此代码转换为C#,或者可能是Delegates,但我真的不知道如何实现它,我还没有在网上找到任何类似的例子。任何帮助将不胜感激。

谢谢,YT

更新

这就是我在 C# 中实现它的方式。

我没有创建结构,而是创建了一个枚举和一个类来表示 C++ 结构,如下所示:

C++ 结构

现在,在 C# 中:

}

现在,我可以通过调用特定的枚举来访问数组的元素,如下所示:

它的代码更多,但它在 C# 中本机工作,并且比其他解决方案更有效。