C/C++

Как в C++ продолжить классы разные сгруппировано в файлах .h и .cpp, при этом не переопределяя классы эти?

Задача, в файлах .h и .cpp объявить много классов. И при этом, в файлах .h только заголовки, в файлах .cpp только тела функций. И самое главное, в файле .cpp исключить возможность их перемешать. Такое перемешивание возникнет, если их делать по типа ClassTest1::func1, ClassTest2:func1.

Пробовал:
1) partial class (не то)
2) namespace (ложь)
3) объявить также само (компилятор считает переопределением).

Не варианты:
1) Использовать для каждого класса файлы отдельные не вариант, это зафлудит IDE
2) Использовать для всех классов, встроеннный тип.
> Такое перемешивание возникнет
Не возникнет. Разные классы вполне могут содержать одинаковые методы. Поэтому никак не получится.
Арман Муханов
Арман Муханов
85 664
Лучший ответ
Александр Максимов Нужно что-то по типу, открыть продолжение класса (блок кода), так чтобы он считался не переопределённым, а продолженным.
не совсем понимаю, что не так с "перемешиванием"
тебя чисто в эстетическом плане беспокоит возможность того, что определения методов разных классов могут идти в cpp-шнике вперемешку?
если да, то это явно с помощью подключения линтера при сборке делается, а не средствами самого языка
а если нет, то ты описал какую-то муть, и нужно попробовать снова, на этот раз с более осмысленной формулировкой, может, даже с какими-то набросками кода
Сергей Чужинов
Сергей Чужинов
36 956
Александр Максимов С какой Visual Studio работает C++ partial class.
Знаю что в C.Sharp уже в 2008 есть, а вот в C++ по самую 2019 нет.
Александр Максимов Хотя на сайте Microsoft, есть статья про parical class для C++/CX
Но это не работает.
>Задача, в файлах .h и .cpp объявить много классов.
Ок, объявляй

>И при этом, в файлах .h только заголовки, в файлах .cpp только тела функций.
Ок. А в чем собственно вопрос? Язык позволяет объявить классы в заголовках и в произвольных *.cpp файлах сделать реализацию их методов, при этом класс, конечно, при желании можно размазать по разным *.cpp файлам. Да, кстати, за такое обычно сильно бьют по голове - каждый класс должен быть в своей паре h/cpp, это не "зафлудит IDE", это единственно верный способ композиции классов. Исключение здесь только может быть при инжектировании зависимостей, ну и для каких-то мелких классов-структур.

>И самое главное, в файле .cpp исключить возможность их перемешать. Такое перемешивание возникнет, если их делать по типа ClassTest1::func1, ClassTest2:func1.
Это бред, впрочем, выше уже указали.
Алексей Гашков
Алексей Гашков
30 155