2015-12-17 117 views
2

我试图创建一个C++类模板,它利用了指向成员参数的指针,但编译失败。如何从模板中访问指向成员参数的指针?如何访问C++类模板中成员参数的指针?

class Base { 
public: 
    int foo; 
    int bar; 
}; 

template<int Base::* T> 
class Derived : public Base { 
public: 
    int Get() { return *T; } <--- Does not work 
}; 

Derived<&Base::foo> test; 
printf("Value = %i\n", test.Get()); 

来自Clang的编译错误是indirection requires pointer operand ('int Test::*' invalid)

回答

0
return this->*T; 

(为什么T?这不是一个类型。)

4

尝试

int Get() { return this->*T; } 

.*->*是取消引用指针到成员的运营商。

+0

谢谢!对不起,你比被接受的答案迟了1分钟:) – Pol

+2

@Pol:如果你发现一个更新的答案更有帮助,完整等,你总是可以改变接受的答案。 – IInspectable

相关问题