Я хотел бы, чтобы переместить вложенный класс Inner из Outer.h в отдельном файле заголовка:C++ вложенный класс в файле разделенных заголовка
class Outer{
class Inner{
public:
Inner(Outer& o){}
};
public:
Outer():i(*this){}
~Outer(){}
Inner i;
};
И 'main.cpp'
#include "Outer.h"
int main(){
Outer o;
return 0;
}
Но как только я пытаюсь поместить внутренний класс внутри отделенной головой, как это:
class Outer{
class Inner;
public:
Outer():i(*this){}
~Outer(){};
Inner i;
};
и поместить внутренний класс в «Inner.h», как это:
class Outer::Inner{
public:
Inner(Outer& o){}
};
и добавить в основную #include 'Inner.h', как это:
#include "Outer.h"
#include "Inner.h"
int main(){
Outer o;
return 0;
}
Я получаю следующее сообщение об ошибке от компилятора: Outer.h: 10: 9: ошибка: поле ' i 'имеет неполный тип.
Я понимаю более или менее, почему, но я не могу найти проблему для достижения того, что я хочу делать.
Не следует ли определять определение «Внутренний», чтобы определить конструктор «Наружный», как вы это делали? –
@NicolaMusatti - спасибо, исправлено. –
Большое спасибо за вашу помощь! – bou