1

main.CIで、ネストされた構造体メンバー(g.Fp1.d_status)にアクセスしようとすると、次のエラーが発生します。

'g.GridPt::Fp1'にはクラスタイプがありません

以下は私のコードです。私は本当にいくつかの助けを使うことができます。ありがとう。g.MarchingDirection :: Fp1.d_status、g。&MarchingDirection :: Fp1.d_status、...のようなものを試しましたが運がありませんでした。


//Filename: main.C

#include "GridPt.h"

int main()
{   
    GridPt g;

    g.d_lstDistFn;
    g.Fp1.d_status; \\ERROR: 'g.GridPt::Fp1' does not have class type

    return 0;
}

//Filename: MarchingDirection.h

#ifndef included_MarchingDirection
#define included_MarchingDirection

struct MarchingDirection
{
    MarchingDirection(double FValue);   

    double d_F;              
    int d_inOut;             
    char d_status;          
};
#endif

//Filename: MarchingDirection.C

#include "MarchingDirection.h"

MarchingDirection::MarchingDirection(double FValue)  
: d_F(FValue),
  d_inOut(static_cast<int>(FValue)),
  d_status('d'){}

//Filename: Grid2D.h

#ifndef included_GridPt
#define included_GridPt

#include "MarchingDirection.h"
#include <cstddef>

struct GridPt
{   
    GridPt();    

    double d_x, d_y; 
    MarchingDirection Fp1(double F=1.0), Fm1(double F=-1.0);
    double d_lstDistFn;    
};

#endif 

//Filename: GridPt.C

#include "GridPt.h"

GridPt::GridPt() 
: d_lstDistFn(0.0){}
4

1 に答える 1

1

GridPt構造体内でFp1、Fm1関数を宣言しましたが、これらはメンバーではありません

次のように変更できます。

struct GridPt
{   
    GridPt();   

    double d_x, d_y; 
    MarchingDirection Fp1, Fm1;
    double d_lstDistFn;    
};

以下に示すように、すべての構造体メンバーを初期化します。

GridPt::GridPt() 
: d_x(0.0), 
  d_y(0.0), 
  Fp1(1.0),
  Fm1(-1.0),
  d_lstDistFn(0.0)
{}
于 2012-11-22T00:14:35.813 に答える