我不确定该怎么调用它,但是像注释行反射(reflect)的那样可能吗?
template <typename T>
class Test
{
public:
Test(T& t) : m_t(t) {}
T* operator->() { return &m_t; }
private:
T& m_t;
};
class A
{
public:
static const int integer = 0;
void function() {}
};
int main()
{
A a;
Test<A> test(a);
test->function();
// Something similar to doing Test<A>::integer?
return 0;
}
最佳答案
那么,你为什么不这样做:
test->integer;
您始终可以像访问非静态成员一样访问静态成员(即从实例变量)。
另一种选择是在测试中定义:
template <typename T>
class Test
{
public:
typedef T value_type;
// ...
};
在这种情况下,您将能够:
Test<A>::value_type::integer;
这将避免创建 Test<A>
实例的需要.
最后,如果您使用的是 C++11 和 Test
遵循智能指针约定,那么您将拥有:
std::pointer_traits<Test<A> >::element_type::integer;
即使替换 Test<A>
也能正常工作与 A*
.
关于c++ - 是否可以像为另一种类型重载成员访问运算符那样解析静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22897059/