Есть трёхфайловый проект, состоящий из файла main.cpp(где создан объект bObj класса B и подключен файл classes.h), файла classes.cpp, в которых прописаны реализации методов классов A и B, файла classes.h, в котором описаны прототипы функций и конструкторов. Линковщик перестаёт ругаться если блок с конструкторами вынести в main.cpp не изменяя их содержание. Как можно переписать конструкторы чтобы не было ругани? В интернете почему-то нету такого примера
Класс A виртуальный, но в нём есть метод который можно вызвать из наследуемого - метод показывает значение поля этого класса Класс B наследник, конструктор класса с аргументами, позволяющий записать в поле базового класса аргумент, переданный при создании объекта
classes.h
class A
{
protected:
int a;
public:
inline A(void);
inline A(int aa);
virtual void print() = 0;
};
class B : public A
{
private:
int b;
public:
inline B(void);
inline B(int bb);
void print();
};
classes.cpp
#include "classes.h"
inline A::A(void)
{
a = 0;
}
inline A::A(int aa)
{
a = aa;
}
void A::print()
{
cout << a << endl;
}
inline B::B(void)
{
b = 0;
}
inline B::B(int bb)
{
a = bb;
}
void B::print()
{
cout << a << endl;
}
main.cpp
#include "classes.h"
B bObj(5);
bObj.print();
inline B::B(int bb)Превращается вB::B(int bb)в заголовке и самом файле cpp – anrej0705 Sep 16 '23 at 02:21