0

私は C++ クラスが初めてで、単純な問題に直面していますが、残念ながらまだ解決策が得られていないため、ここに投稿します。私はこのような構造体を作りました

struct mono_scan_temp
{
    double num_filters[1][1];
    double filter_data[1024][153][3];
    double shutter_speed[1][3];
    double resolution[1][153];
    double monochromator_gain[1][1];
    double zero[1][1];
    double saturation[1][1];
    double dark_noise[3][1024];
    double slit_size[1][1];
    double version[1][1];
};

この構造体は.hファイルにあり、このように同じヘッダーファイルでインスタンス化しました

mono_scan_temp          scan_data_temp;

メインファイルからメンバーにアクセスしようとすると、このエラーが発生します。

エラー 43 エラー C2228: '.num_filters' の左側には class/struct/union が必要です

この構造体のメンバーは、このような .mat ファイルからのデータを保持します

Mat_VarReadData(mat,field_num_filters,scan_data_temp.num_filters,start_num_filters,stride_num_filters,edge_num_filters);

for(i=0;i<field_num_filters->dims[0];i++)
for(j=0;j<field_num_filters->dims[1];j++)
printf("%f \n  ",scan_data_temp.num_filters[i][j]);

また、ヘッダーファイルはメインファイルに含まれています。

私はそれが単純な問題であることを知っていますが、私の知識が限られていることを事前に申し訳ありません.

前向きな回答お待ちしております。

ありがとう

4

1 に答える 1

1

どうやら部分式がXXX.num_filtersありXXX、タイプのオブジェクトではありませんmono_scan_temp

zero各次元でバインドされた 1 の 2 次元配列であり、 のメンバーであると定義することstructは、業界では「コードの匂い」と呼ばれることがあります。


この行はヘッダー ファイルには含まれません。ファイルに入れる必要があり.cppます。ヘッダーでインターフェイスの一部としてグローバル オブジェクトを宣言するにはextern、宣言の前に を追加しますextern mono_scan_temp scan_data_temp;。これは、ファイルでの定義に追加され.cppます。

プログラムの残りの部分は C で書かれているように見えますが、この行には C++ が必要です。そのため、C++ コンパイラを使用していることと、ファイル名が で終わっていることを確認してください.cpp(それが本当に必要な場合)。

mono_scan_temp          scan_data_temp;
于 2013-09-03T01:41:18.600 に答える