0

次のような基本クラスがあります。

class Base
{
public:
    virtual void fun() const =0;
};

class Derived: public Base 
{
    virtual void fun()
    {
        //implemtation of fun
    }
};

私はグローバル構造を持っています:

struct Mystruct {
    int a;
    char *b;
} MYSTRUCT;

次に、構造をベクターに追加しました。

List  = new MYSTRUCT;
vector<MYSTRUCT*> SS;
SS.push_back(List);

this ベクトルを fun 関数に渡し、関数内の構造体にアクセスするにはどうすればよいですか?

4

2 に答える 2

1

あなたはこれの意味について混乱しているようです:

struct Mystruct
{
int a;
char *b;
}MYSTRUCT;

これは、呼び出された構造体と呼び出さMystruct たのインスタンスの宣言です。したがって、これらの構造体を作成または保持するときは、をテンプレート パラメーターとして使用する必要があります。MystructMYSTRUCTstd::vectorsstd::lists

std::vector<Mystruct> v0; // vector holding 0 Mystructs

ポインタを保持するベクトルが必要な場合は、

std::vector<Mystruct*> v1;

MYSTRUCTは型ではないため、これは単純にコンパイルされません。

std::vector<MYSTRUCT*>
于 2012-10-30T20:42:09.947 に答える
1

そのように:

class Base
{
public:
    virtual void fun(const std::vector<Mystruct*>& list) const =0;
};

class Derived:public Base 
{
public:
    virtual void fun(const std::vector<Mystruct*>& list)
    {
        //implemtation of fun
    }
};

しかし、あなたのサンプルは、C++ クラスの設計方法を理解する上で他の問題を抱えている可能性があることを示しています (たとえば、この C のような構造体定義構文を C++ で使用する必要はありません)。

于 2012-10-30T19:54:35.210 に答える