Как определение класса в одном cpp может быть видимым / полезным для другого cpp

Комбинируя 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");
}

Вот как это работало в прошлый раз. Я был бы очень признателен за надежное решение для этого грязного проекта или что-то еще, что делает этот код лучше / работает. Спасибо!

0

Решение

Разбейте X-файл на файл заголовка (X.h), содержащий объявление класса, и исходный файл (X.cpp), содержащий определения для конструкторов классов, методов и т. Д.
Теперь включите заголовочный файл в ваш Y.cpp файл. Затем скомпилируйте как-нибудь так:

g++ Y.cpp X.cpp
0

Другие решения

Если вам нужны только указатели или ссылки на X, вы также можете использовать предварительное объявление класса X в Y.cpp,

2

По вопросам рекламы [email protected]