2017-09-18 10 views
0

私はguiから情報を取り込んでデータを保持するクラスに追加するqt付きのデータ追跡プログラムを持っています。 .appendメソッドが存在しないようですのでQVector2dは使用しませんでした。Qtのヘルプフォーラムとドキュメントを検索しました。私は情報をシリアライズするのでQObjectを使用する必要があります。私は、ネストされたQVector< QVector<qint8>>プログラムがクラッシュにQVector<qint8>を追加し、私は何の役に立つデバッグ情報を取得していないときにデータが、何らかの理由でそう QVector< QVector<qint8> > log_matrix;QVector Append Crashing

のようなネストされたQVectorに格納されます。 私は私のヘッダ内のデータクラスにメソッドとしてこれを試してみました:

void insert_new_log(QVector<qint8> new_log) 
{ 
    this->log_matrix.append(new_log); 
} 

と私はappendメソッドを悪用アム

QVector<qint8> my_data; 
//initialize data 
my_class->my_data_matrix.append(my_data); 

main.cppにファイルでこれを試してみましたか? appendメソッドを使わない別の方法がありますか?

+3

してください** [編集] ** [MCVE]または[SSCCE(含まれるショート、自己、正しい例)](http://sscce.org)提供されたコードで明らか – NathanOliver

+0

何もあなたの質問スニペット。呼び出し元のインスタンスが有効であることを確認してください。 – user4581301

答えて

0

メソッド定義でクラス名を忘れてしまったようです。いずれにせよ、あなたの方法は機能するはずです。

void ClassName::insert_new_log(QVector<qint8> new_log) 
{ 
    this->log_matrix.append(new_log); 
} 

2番目の例では、my_dataをどのデータでも初期化しません。確かに動作しますが、クラスのパブリックメンバーに外部からアクセスすることは、伝統的に悪い形式です。 getters/settersを使うことをお勧めします。説明のため、私が代わりにthisを使用し、あなたのmy_class

また、あなたは好きならappendメソッドを呼び出すために追記演算子<<を使用することができます。

QVector< QVector<qint8> > log_matrix; 
QVector<qint8> my_data; 

my_data<<1; 
this->my_data_matrix<<(my_data);