Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以像重载其他类型的成员访问操作符一样解析静态成员?_C++ - Fatal编程技术网

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++中,重载只对函数有意义。您可以尝试创建两个单独的类,这两个类都包含所有非静态成员,而不是在一个类中混合静态项和非静态项。从函数调用返回值,而不是使用公共静态成员变量