Forward声明一个指向STL容器的指针?

时间:2016-05-27 22:49:05

标签: c++ pointers stl forward-declaration

在我的头文件中,我想避免使用#include,但我的类将有一个向量或指向向量的指针。我只满足于一个指针,但我无法弄清楚如何声明它。我是否必须将其声明为无效*并始终投射?那将是蹩脚的。

// What do I type here to forward declare vector?

class Counters
{
    Counters();

    void inc(const char* s);

    void print();

    void clear();

private:
    std::vector<int>* Counts;
    int total;
};

请注意我只想要一个容器的指针存放在我的班级而不是容器中。指针的大小是已知的,无需引用容器的声明,因此请不要回答这是不可能的,因为编译器需要知道容器声明。

1 个答案:

答案 0 :(得分:0)

也许这适用于您的情况:

//header
struct Container;

struct Foo{
    Container *container;
};

//cpp
#include <vector>

struct Container : std::vector<int>{

};

int main(){
    Foo foo;
    foo.container = new Container;
    foo.container->push_back(42);
}