Я хочу переопределить библиотеку, в которой у меня есть файл заголовка.
Я бы предпочел не изменять файл .h, так как это потребовало бы изменений в программах, которые используют библиотеку (плюс некоторые юридические причины).
РЕДАКТИРОВАТЬ: Я также не могу изменить код, который использует библиотеку и создает экземпляр класса X!
lib.h определяет класс X (упрощенная версия):
class X
{
public:
bool Function(BOOL q, INT p);
BOOL a;
INT b;
};
(BOOL и INT - это только некоторые типы данных, используемые библиотекой, эти классы оборачивают примитивный тип данных bool и int).
Я реализовал этот класс в my_lib_implementation.cpp:
bool X::Function(BOOL q, INT p)
{
return true;
}
Файл .h не определяет конструктор, так что это означает, что существует неявный конструктор (верно?).
Проблема в том, что мне нужно инициализировать переменные a и b, чтобы моя реализация функции (BOOL q, INT p) работала правильно.
Однако, если я добавлю следующее, я получу ошибки компиляции («ошибка: определение неявно объявленного« X :: X () »», gcc 4.4):
X::X()
{
a=true;
b=0;
}
Можно ли перегрузить конструктор какой-то магией, о которой я не знаю? Есть ли другие варианты инициализации переменных?
Существует реализация библиотеки (которую я не могу использовать), поэтому кажется, что это должно быть как-то возможно?
Я только начал программировать на C ++ на этой неделе (у меня большой опыт работы с другими языками), так что эта проблема, вероятно, просто отсутствие у меня базовых знаний.
Надеюсь, вы, ребята, можете мне помочь!