次の問題があります。C++ で実行する必要があるプログラムで C ライブラリ igraph (http://igraph.sourceforge.net/) を使用しています。そこで、この C ライブラリ (http://code.google.com/p/igraphhpp/) の C++ ラッパーを見つけました。これは、Graph というクラスで、使用したいと思っていた優れたインターフェイスを提供します。
プログラムに次のクラスがあります。
class Agent
{
private:
double beta;
Graph * innerGraph;
public:
Agent(int N, double beta_) {
innerGraph = new Graph;
*innerGraph = Graph::full(N);
beta = beta_;
};
~Agent() {delete innerGraph;}
void MCStep();
};
関数 MCStep() は、次のことを行う必要があります。
- に含まれるグラフのコピーを作成し
*innerGraph
、 - オリジナルを変更せずに、このコピーに何らかの操作を行い、
- 変更されたコピーが何らかの条件を満たしているかどうかを確認し、そうであれば、
*innerGraph
この新しい変更されたグラフで更新します。
ライブラリがセーフ コピー コンストラクターを実装していることを知っていれば、当然のことですが、そうしません。どうすれば確認できますか?