如果可能,将C++指针解引用到类型

class Foo {
public:
    static const int BAR = 2;
};

typedef Foo T1;
typedef Foo* T2;

int value1 = T1::BAR;  // This works.
int value2 = T2::BAR;  // This doesn't work.

可以BAR从中提取的值T2吗?

我正在使用 c++-11。

我想这将是不好的做法,但我很好奇是否可以做到。

回答

是的。

您可以使用特征去除指针:

int value2 = std::remove_pointer<T2>::type::BAR;

或者(C++14 起):

int value2 = std::remove_pointer_t<T2>::BAR;

(参考•现场演示)

这甚至不是坏习惯,除非有一些更具表现力的方式来实现您的真正目标。


以上是如果可能,将C++指针解引用到类型的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>