0

ブースト、デモ プロジェクト、および別のライブラリを組み合わせているときに、定義に関する問題に遭遇しました。

クラス X を含む 1 つの X.cpp ファイルがあるので、このクラスを Y.cpp の変数に使用して、void ポインターをこのクラスへのポインターとして変換する必要があります。

コード内:

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");
}

前回はこんな感じでした。この厄介な構造や、このコードをより良く/機能させるための確かな解決策をいただければ幸いです。ありがとう!

4

2 に答える 2

2

X へのポインターまたは参照のみが必要な場合は、クラス X の前方宣言を使用することもできますY.cpp

于 2012-09-06T08:22:34.157 に答える
0

X ファイルを、クラス宣言を含むヘッダー ファイル (Xh) と、クラス コンストラクター、メソッドなどの定義を含むソース ファイル (X.cpp) に分割します。次に、ヘッダー ファイルを自分の Y.cpp ファイルに含めます。次に、次のようにコンパイルします。

g++ Y.cpp X.cpp
于 2012-09-06T08:21:50.050 に答える