Передача ссылки на конструктор вызывает исключение времени выполненияC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Передача ссылки на конструктор вызывает исключение времени выполнения

Сообщение Anonymous »

Я реформировал какой -то код, и теперь мой модульный тест сбивается. Тестируемый код работает нормально в проекте, но когда я наследую от класса в тестовом приборе, при запуске конструктора возникает ошибка. Взгляните на этот код: < /p>
class ClassA : public InterfaceA
{
public:
virtual void SetMember(float member_in) override
{
member = member_in;
}

private:
float member;
};

class ClassB
{
public:
ClassB(InterfaceA& a_in)
{
a_in.SetMember(6.28f);
}
};

class ClassBTestFixture : public ClassB
{
public:
ClassBTestFixture() : ClassB(a1) { }

private:
ClassA a1;
};

class ClassBTestFixture2
{
public:
ClassBTestFixture2() : b(a1) { }

private:
ClassA a1;
ClassB b;
};

int main()
{
ClassBTestFixture fixture;
}
< /code>
Я получаю исключение во время выполнения при вызове A_IN.Setmember, говоря «this-> a_in. был 0xcccccccc». Однако, когда я создаю экземпляр ClassBtestFixture2, который использует композицию вместо наследования, он работает нормально. Но это затруднило бы писать модульные тесты (или переписать в этом случае). < /P>
Я использую VS2019 для этого проекта, но в качестве шага по устранению неполадок я попробовал его на Linux с помощью GCC, и у меня такая же проблема. Есть идеи, что происходит?

Подробнее здесь: https://stackoverflow.com/questions/795 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»