プロが教えるわが家の防犯対策術!

他の人のプログラムをLibにして流用しようとしているのですが,
問題にぶち当たってます.

Libで定義されているクラスに,
ある情報を取得/格納できるクラスがあるのですが,
いざ,そのクラスをインスタンス化し,
クラスで定義してあるメソッドを実行してインスタンスのメンバ変数に情報を格納した後に,インスタンスのメンバの情報をメソッドなどは使わずに取り出そうとすると一部の情報が格納されておらず抜き出すことができません.
そのクラスにはシングルトンで実装されており,クラスが持っている情報表示用メソッドを実行すると,ちゃんと,格納されてるぽいのですが・・・・・.もちろん,メンバ変数はパブリックです.

唯一違うとすれば,取り出すことができるメンバの型はdoubleで,取り出せないのはVector< (独自の構造体) >という点くらいです・・・・.エラー内容は取り出せないというよりはVectorのメモリが確保されていないような感じです.

当然,Libをexeで起動した場合は正常に動いているます.

何か思いつく原因は無いでしょうか??
宜しくお願いします!!

A 回答 (1件)

多分ですが。

。。

vectorの実装をLib側で行っており、vector<独自の構造体>の「独自の構造体」をLibを使う側で行っていませんか?

この場合、Lib側のコンパイル時に「独自の構造体」のサイズを確定できないため、コンパイルは一応正常終了しても可笑しな動作になります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!!

ドンピシャです・・・・・.
独自の構造体はLibで定義されたクラス内部もしくは名前空間の中で宣言しており,Vector<独自の構造体>もLib内のクラスで宣言しています.

Lib内のクラスのメソッドを実行した場合は,vector<独自の構造体>を取得することは出来ているはずですが・・・

つまり,
1,独自の構造体はサイズを確定できないためLibにする場合は利用できない
それとも,
2,Lib内で処理が完結する分には使うことができるが,Libを呼び出しているソースからは,独自の構造体のサイズが確定できないため利用できない.

どちらになるのでしょうか??
Lib側の仕様を大規模に変更することは不可能なのですが回避策は何か無いでしょうか??
SetメソッドやGetメソッドを追加したりいしなければならないでしょうか??

あと,Libの元を作った人いわく,「Libでも正常に動いたよ」なのだそうですが・・・・勘違いなのでしょうか??

教えていただけないでしょうか?
宜しくお願いします!!

お礼日時:2010/02/08 12:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!