Комбинируя Boost, демонстрационный проект и другую библиотеку, я столкнулся с проблемами с моими определениями.
Имея один файл X.cpp, включая класс X, мне нужно использовать этот класс для переменной в Y.cpp, чтобы преобразовать пустой указатель в качестве указателя на этот класс.
В коде:
X.cpp
#include <boost/...>
class x {
}
Main(){
x c(...);
handler = init(&c);
anotherLib-Function(void *handler);
//will call function in Y.cpp with c as void pointer
}
Y.cpp
#include ?!!
yfunction(void *c){
x *cHandle;
*cHandle = (x *)c;
(*cHandle).write("texte");
}
Вот как это работало в прошлый раз. Я был бы очень признателен за надежное решение для этого грязного проекта или что-то еще, что делает этот код лучше / работает. Спасибо!
Разбейте X-файл на файл заголовка (X.h), содержащий объявление класса, и исходный файл (X.cpp), содержащий определения для конструкторов классов, методов и т. Д.
Теперь включите заголовочный файл в ваш Y.cpp файл. Затем скомпилируйте как-нибудь так:
g++ Y.cpp X.cpp
Если вам нужны только указатели или ссылки на X, вы также можете использовать предварительное объявление класса X в Y.cpp
,