转发声明指向 STL 容器的指针

Forward declare a pointer to an STL container?

本文关键字:指针 STL 声明 转发      更新时间:2023-10-16

在我的头文件中,我想避免使用 #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;
};

请注意,我只想在我的类中存储一个指向容器的指针,而不是容器。指针的大小是已知的,不需要参考容器的声明,所以请不要回答这不能完成,因为编译器需要知道容器声明。

也许这适用于您的情况:

//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);
}