2017-02-12 11 views
1

Просто был задан быстрый вопрос об определении функций с вложенными классами.Вложенные определения классов C++

Учитывая пример ниже:

class OuterClass { 
    class InnerClass{ 
     public: 
     void someMethod(); 
    }; 

    InnerClass someFunction(); 

}; 

Я понимаю, для определения SomeMethod в .cpp вы могли бы сделать:

void OuterClass::InnerClass::someMethod() { 
    // stuff} 

Но как бы определение InnerClass SomeFunction идти?

+1

'InnerClass OuterClass :: SomeFunction() {...}' – kebs

+0

С технической точки зрения, это также «метод» (также как функция-член), поэтому вызов 'someMethod()', а другой 'someFunction()' является вводит в заблуждение, – kebs

ответ

4
OuterClass::InnerClass OuterClass::someFunction() 
{ 
    // Code here... 
} 

Те же правила применяются к обоим InnerClass и someFunction: они объявлены внутри OuterClass, поэтому они должны быть квалифицированы OuterClass:: быть достигнута.