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