0

ポインターを介したメンバー変数へのアクセスに関してC++を使用して、ここで問題が発生しています。

次のクラスがあり、いくつかの出力と一意のタグがあるとします。

class CSource
{
   public:
   int tag;
   double output;
}

クラスへのポインタとタグをこのような構造体に格納したい

struct foo
{
    CSource *source;
    int sourceTag;
}

次に、2 番目のクラスで、CSource クラスへのポインターを引数として受け取るメンバー関数を用意します。

class CDest
{
    public:
    void addSource(CSource *sourcePtr);
}

そして、そのメンバー関数はポインターとタグを構造体に格納します

void CDest::addSource(CSource *sourcePtr)
{
    foo temp;
    foo.source = sourcePtr;
    foo.tag-> sourcePtr.tag; 
}

最後の行で、「エラー: 式にはポインター型が必要です」というエラーが表示されます。次のステップは、リストを検索してそのソースが既に追加されているかどうかを確認し、追加してから、リストを検索して削除する逆関数を使用することであるため、ポインタではなく生のタグ値が必要です。タグを使用してそこにある場合は構造体。

4

2 に答える 2

2

クラス名ではなく、変数名を使用する必要があります。

foo temp;
temp.source = sourcePtr;
temp.tag = sourcePtr->tag; 
于 2015-09-04T18:38:45.413 に答える
0

「foo.tag->sourcePtr.tag」の代わりに、この「foo.tag = sourcePtr->tag」を試してください。

その後、コンパイルエラーは発生しません。

ちなみに、「CSource」オブジェクトを一意に挿入することが目的の場合は、連結リストを使用する代わりに std::set を使用できます。

于 2015-09-05T05:52:04.633 に答える