c++ - Is it possible to resolve static members similarly to overloading the member access operator for another type? -
i not sure call it, possible commented out line reflects?
template <typename t> class test { public: test(t& t) : m_t(t) {} t* operator->() { return &m_t; } private: t& m_t; }; class { public: static const int integer = 0; void function() {} }; int main() { a; test<a> test(a); test->function(); // similar doing test<a>::integer? return 0; }
well, why don't do:
test->integer;
you can access static members same way non-static ones (i.e. instance variable).
the other option define in test:
template <typename t> class test { public: typedef t value_type; // ... };
in case able do:
test<a>::value_type::integer;
which avoid need of creating instance of test<a>
.
at last, if using c++11 , test
follows smart pointers conventions, have:
std::pointer_traits<test<a> >::element_type::integer;
which has advantage work if replace test<a>
a*
.
Comments
Post a Comment