Я думаю, ваша проблема может быть здесь:
// Object2.h
class Object2
{
public:
Object1 obj1;
Обратите внимание, что Object2
имеет переменную-член с именем obj1
, и что ваш конструктор Object2
инициализирует эту переменную-член, используя ссылку, переданную в качестве аргумента конструктору:
Object2::Object2(string filename, Object1& obj1)
: filename(filename), obj1(obj1)
{
Обратите внимание, что значение obj1(obj1)
здесь неочевидно - вы назвали свой второй аргумент конструктора obj1
, но у вас также есть локальная переменная-член с именем obj1
. Чтобы избежать неоднозначности для читателя-человека, вы должны изменить либо имя аргумента, либо имя переменной-члена.
Вы также можете изменить тип переменной-члена вашего класса Object2 с Object1
на Object1 &
, если вы хотите, чтобы объект Object2
продолжал напрямую ссылаться на исходный объект obj1
чем использовать свой отдельный Object1
член-объект.