home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.c++.moderated      Moderated discussion of C++ superhackery      33,346 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 33,310 of 33,346   
   marcel.loose@googlemail.com to All   
   Is this use of the keyword struct invali   
   17 Apr 14 05:26:45   
   
   Hi all,   
      
   I bumped into a compilation error with GCC 4.8 with the following code:   
      
   $ cat t.cc   
   class B   
   {   
   protected:   
     struct S {};   
     virtual void doIt(struct S& s) = 0;   
   };   
      
   class D : public B   
   {   
   public:   
     using B::S;   
     virtual void doIt(struct S& s);   
   };   
      
   void D::doIt(struct S& s)   
   {   
     (void)s;   
   }   
      
   $ g++ -Wall -Wextra -Woverloaded-virtual -c t.cc   
   t.cc:5:16: warning: 'virtual void B::doIt(B::S&)' was hidden   
   [-Woverloaded-virtual]   
      virtual void doIt(struct S& s) = 0;   
                   ^   
   t.cc:12:16: warning:   by 'virtual void D::doIt(S&)' [-Woverloaded-virtual]   
      virtual void doIt(struct S& s);   
                   ^   
   t.cc:15:6: error: prototype for 'void D::doIt(B::S&)' does not match any in   
   class 'D'   
    void D::doIt(struct S& s)   
         ^   
   t.cc:12:16: error: candidate is: virtual void D::doIt(S&)   
      virtual void doIt(struct S& s);   
                   ^   
      
   When I remove struct in the declaration of doIt(), everything compiles fine.   
   What's going on here?   
      
      
   --   
         [ See http://www.gotw.ca/resources/clcm.htm for info about ]   
         [ comp.lang.c++.moderated.    First time posters: Do this! ]   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca