有没有办法在不引用其模板类型的情况下转发声明指向类的指针
Is there any way to forward declare a pointer to a class without referencing its template type?
In foo.h:
#include <vector>
class A {
int x;
};
typedef std::vector<A> AVector;
我想要的是把它放在bar.h中:
#include <vector>
<<< some forward declaration of AVector here>>>;
class B {
AVector *myVector;
};
我想将"AVector"声明到 bar.h 中,而 bar.h 不必包含类 A 的定义。由于类 B 只需要知道它是一个指针,而不是指针内的细节,我希望有某种方法可以声明这一点。
注意:我知道我可以只声明"void *",然后在不同的点进行投射。我宁愿不要失去类型安全。任何失去类型安全性的解决方案都无法解决我的问题。
从Jean-BaptisteYunès对这个问题的评论中,你可以转发声明一个std::vector,而没有A的完整定义。这意味着这有效:
class A;
typedef std::vector<A> AVector;
class B {
AVector *myVector;
};
相关文章:
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 是否可以在不扣除的情况下将模板参数转发到 make_*?
- 有没有办法在不引用其模板类型的情况下转发声明指向类的指针
- 为什么在这种情况下转发引用不起作用?
- 如何在不依赖#Define的情况下转发声明数组大小
- 是否可以在没有类型推断的情况下实现类似转发引用的行为
- 允许人们在没有端口转发的情况下主持自己的多人游戏
- 为什么转发引用在右值的情况下不能推导为右值引用
- 是否可以在不使用 SFINAE 或编写多个版本的情况下完美转发"non-generic"类型?
- 在没有类声明的情况下转发shared_ptr