gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:07:48 24 4
gpt4 key购买 nike

考虑一下:

template < typename VectorType >
void ff()
{
// This passes.
typedef typename VectorType::value_type VV;
typedef int VV::* MM;

// This FAILS!??
typedef int typename VectorType::value_type::* MMM;
}

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

我的编译器是 GCC-4.7.2。

最佳答案

正如评论中所指出的,您有一个 typename 不应该出现的位置:

typedef int typename VectorType::value_type::* MMM;

应该只是:

typedef int VectorType::value_type::* MMM;

typename 在模板中有 a::b 时使用,a 取决于模板参数和 b 是一种类型。在这种情况下,您必须使用 typename a::b 将此事实传达给编译器。

另一方面,你正在执行 a::b::*,这清楚地表明 b 必须是一个类型,所以 typename 不能在这里使用。

关于c++ - 指向类型名成员的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19267417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com