Можно ли поместить объявление и определение класса в разные файлы? - PullRequest
0 голосов
/ 18 января 2020

Мне просто интересно, было бы возможно иметь класс, который находится внутри другого класса, но в другом файле. Например, если у меня есть это:

//Master.h
class Master {
public:
    class subclass;

    subclass sc;
    Master() {
        sc.sayHi();
    }
};

//subclass.cpp
class Master::subclass {
public:
    void sayHi(){
        std::cout << "hi" << std::endl;
    }
};

Тогда определение подкласса не работает, мастер-класс обрабатывает его как пустой класс. Я хочу только указать в одной строке, что «подкласс» должен быть частью «Master», но не должен писать какой-либо код подкласса в Master.h, как я могу это исправить?

1 Ответ

1 голос
/ 18 января 2020

Вы можете включить отдельный заголовочный файл подкласса в положение, в котором вы определяете подкласс. Я не думаю, что это улучшило бы качество кода / читаемость.

Хотелось бы так:

//Master.h
#include <iostream>
class Master {
public:
#include "subclass.h"
    subclass sc;
    Master() {
        sc.sayHi();
    }
};

// subclass.h
class subclass {
public:
  void sayHi(){
      std::cout << "hi" << std::endl;
  }
};
...