C++ C++;:gcc:此范围中未声明错误

C++ C++;:gcc:此范围中未声明错误,c++,gcc,C++,Gcc,有人能解释为什么gcc抛出: h:在成员函数中–lst::CIterators::Iterator_Forward&lst::CIterators::Iterator_Forward::operator++()-™: lst_iterators.h:77:7:error:m_pData™ 未在此范围中声明 ++m_pData VS2017中一切正常,但gcc抱怨 可以看出,m_pData是迭代器基类中的一个普通变量,那么为什么gcc不能看到基类呢 我使用的是Centos 7.2和gcc 6.3

有人能解释为什么gcc抛出:

h:在成员函数中–lst::CIterators::Iterator_Forward&lst::CIterators::Iterator_Forward::operator++()-™: lst_iterators.h:77:7:error:m_pData™ 未在此范围中声明 ++m_pData

  • VS2017中一切正常,但gcc抱怨
  • 可以看出,m_pData是迭代器基类中的一个普通变量,那么为什么gcc不能看到基类呢
  • 我使用的是Centos 7.2和gcc 6.3
  • 感谢您的帮助

    溴 瓦尔德马尔

    编辑2: 在上也发现了同样的问题。也许比这个->更好的解决方案是定义从基类使用哪些变量

        public: class Iterator_Forward : public Iterator_Base
        {
            protected: using Iterator_Base::m_pData;
    
        //Constructor/Destructor
            public: Iterator_Forward( itemType* pData ) : Iterator_Base( pData )
            ...
    

    gcc真的在写这些奇怪的字符吗?还是只是问题文本中的一个印刷错误?停止用访问说明符注释所有内容。它不是Java。看起来
    m_pData
    是依赖的,因此在第一阶段不能使用它。改为说
    this->m_pData
    。据我所知,MSVC没有正确地实现两阶段查找。你标题中的错误与你身体中的错误完全不同。Molbdnilo:我已经编写了30年的程序,看到了很多代码,从漂亮到纯粹的狗屎,并且使用了多种语言。因此,我从每一种代码中吸取了最好的,并创建了自己的编码风格,这种风格比其他的更具描述性、透明性和美观性(例如,最近我还在使用Qt库,这对我来说是一种纯粹的恐怖,所以我最终决定放弃它,创建自己的)。gcc真的在写这些奇怪的字符吗?还是只是问题文本中的印刷错误?停止用访问说明符注释所有内容。它不是Java。看起来
    m_pData
    是依赖的,因此在第一阶段不能使用它。改为说
    this->m_pData
    。据我所知,MSVC没有正确地实现两阶段查找。你标题中的错误与你身体中的错误完全不同。Molbdnilo:我已经编写了30年的程序,看到了很多代码,从漂亮到纯粹的狗屎,并且使用了多种语言。因此,我从每一个方面都汲取了最好的经验,创建了自己的编码风格,这种风格比其他风格更具描述性、透明性和美观性(例如,最近我还在使用Qt库,这对我来说是一种纯粹的恐怖,所以我最终决定放弃它,创建自己的风格)。
            public: Iterator_Forward& operator++()
            {
            //Increment operator -> go to next value (increase pointer).
                ++this->m_pData;
    
            //Return reference.
                return *this;
            };
    
        public: class Iterator_Forward : public Iterator_Base
        {
            protected: using Iterator_Base::m_pData;
    
        //Constructor/Destructor
            public: Iterator_Forward( itemType* pData ) : Iterator_Base( pData )
            ...