C++ 是否可以像重载其他类型的成员访问操作符一样解析静态成员?
我不知道该怎么称呼它,但是像注释掉的行所反映的那样,这样的事情可能吗C++ 是否可以像重载其他类型的成员访问操作符一样解析静态成员?,c++,C++,我不知道该怎么称呼它,但是像注释掉的行所反映的那样,这样的事情可能吗 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
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->integer;
您可以始终以与非静态成员相同的方式访问静态成员,即从实例变量访问静态成员
另一个选项是在测试中定义:
template <typename T>
class Test
{
public:
typedef T value_type;
// ...
};
这有好处,即使用C++代替了.*/p>< P>不。在C++中,重载只对函数有意义。您可以尝试创建两个单独的类,这两个类都包含所有非静态成员,而不是在一个类中混合静态项和非静态项。在函数调用中返回值,而不是使用公共静态成员变量。
不。C++中,重载只对函数有意义。您可以尝试创建两个单独的类,这两个类都包含所有非静态成员,而不是在一个类中混合静态项和非静态项。从函数调用返回值,而不是使用公共静态成员变量