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

就像这样:

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 回答
1

您似乎对此的含义感到困惑:

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

这是一个被调用的结构Mystruct Mystruct一个被调用的实例的声明MYSTRUCT。因此,当您创建std::vectorsstd::lists保存这些结构时,您需要使用类型作为模板参数:

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

如果你想要一个持有指针的向量,你需要

std::vector<Mystruct*> v1;

这将根本无法编译,因为MYSTRUCT它不是类型:

std::vector<MYSTRUCT*>
于 2012-10-30T20:42:09.947 回答