Cod*_*ner 2 c++ typedef class c++11
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.
Run Code Online (Sandbox Code Playgroud)
可以BAR从中提取的值T2吗?
我正在使用 c++-11。
我想这将是不好的做法,但我很好奇是否可以做到。
是的。
您可以使用特征去除指针:
int value2 = std::remove_pointer<T2>::type::BAR;
Run Code Online (Sandbox Code Playgroud)
或者(C++14 起):
int value2 = std::remove_pointer_t<T2>::BAR;
Run Code Online (Sandbox Code Playgroud)
这甚至不是坏习惯,除非有一些更具表现力的方式来实现您的真正目标。