不完整类型的标准容器
Standard container for incomplete types
我在容器和不完整类型的情况下有一个小问题。
我有此代码:
template<typename T>
class IncompleteType
{ /*Class Definition*/ }
在另一个类上,我想使用不完整类型的向量。该类将C风格结构序列到字符串,因此行为是相同的,无论我提供哪种类型。
但是,当我这样做时:
std::vector<IncompleteType>
或以下:
std::vector<IncompleteType*>
编译器抱怨说我不提供模板类别的参数列表。
我想做的是这样的事情:
IncompleteType<Type1> a;
IncompleteType<Type2> b;
std::vector<IncompleteType*> vector;
vector.push_back(&a);
vector.push_back(&b);
有没有办法有一个容器来不完整的类型?
这是实现多态性的错误方法吗?
谢谢!
您没有不完整的类型 - 那里有一个类模板。它通常会吸引到C 的新人,但是该模板具有不同类型的实例化是(对编译器/类型系统(完全不相关。
模板本身也不是实例化的"基类" - 如果不提供其模板类型参数,则不能使用它。
当您谈论的是"序列化到字符串"时,我想知道您是否正在寻找流媒体操作员 - 专门流到字符串流(例如,请参见https://learn.microsoft.com/en-us/cpp/标准图书馆/超载 - 输出式服务器,为自己的级别(。
发生的事情是您超载&lt;&lt;您自己类型的操作员和所需的流类型,例如
std::ostringstream& operator<<(std::ostringstream& i_stream, const MyType& i_val) {
i_stream << "( " << i_val.GetValue1() << ", " << i_val.GetValue2() << " )" << std::endl;
return i_stream;
}
然后,只要您将流动器的流动器重载超载,就可以将任何类型的对象流式传输到字符串流中。
相关文章:
- 编译标准库类型
- 铸造标准::有没有回到原来的类型
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- 标准库类型的赋值运算符的引用限定符
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 根据C++标准的定义实现"is_similar"类型特征
- 如何为缺少预定义运算符而不扩展命名空间"std"的标准类型定义运算符>> (istream &, ...)?
- 为什么使用标准类型作为模板参数?
- 对标准类型使用原子操作
- 如何定义从标准类型到用户定义类型的转换?
- 自定义和标准类型的数学函数的统一接口
- 使用标准类型的动态类型信息实例化标识符
- 如何切换通过C 标准类型特征传递的值
- 为标准C++类型定义空/空值
- 两个模板函数用于两种标准类型
- 删除左值,保留左值引用(标准类型特征可用?)
- <stdint.h>还是标准类型?
- c++标准类型扩展
- 标准库实现可以专门化标准类型吗
- stint .h中的c++标准类型大小