<T::* int> 是什么意思?

3
在代码中:
typedef
template< typename T>
boost::variant<T::* int, T::* string, T::* double, T::* bool>
   any_member;
< p > T::* 的意思/作用是什么?


6
请参见c-pointer-to-class-data-member - Jarod42
2
哎呀,你们怎么觉得这是有效的C++代码呢? - cpplearner
@cpplearner:你是对的,原帖中一定是笔误了。应该是 int T::* 等等。 - AndyG
1
这是一个可能使用它的示例。请注意,我绝不赞同实际执行此操作;该模式试图具有通用性,并且有更好的方法来完成我提供的链接中的任务。 - AndyG
@cpplearner 我在这个博客上找到了这个例子:http://blog.asymptotic.co.uk/2011/02/c-pointer-template-parameters-are-weird/。我还没有全面阅读,但是顶部的代码立即让我感到困惑。 - Matt
@Matt 我看来,那段代码根本不正确。 - cpplearner
1个回答

4

T::* 是指向 T 的成员指针。其中的 int 是该成员的类型。


1
也许我太过于挑剔了,但是您既使用了 T 也使用了 int 这个单词来表示“类型”。为了避免混淆,我建议重新表述为:“T::* int 是指向类 T 的成员的指针;这个成员的类型是 int。”虽然下投票不是我发出的(如果这是下投票的原因,我认为这有点过分)。 - Fabio says Reinstate Monica
我的是负评。这个问题被标记为重复,并且在我回答之前已经有关闭标志了。除此之外,已经有评论回答了问题并链接到了重复的内容。在我看来,这个回答没有存在的理由。然而,这并不是对其内容的批评。 - AndyG
3
@AndyG 嗯,关闭标志是在我回答之前放置的。我个人认为这并不完全是一个重复的问题,因为语法不同。这是你的投票权,你可以随意处理,但我会把答案留在这里。 - NathanOliver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接