用户定义类型的成员模板
Member template for user defined types
我有一个简单的示例,其中addfield((是成员模板。
使AddField(t(与用户定义的类型或诸如向量等类型的类型一起工作,我需要做什么。它可以与原始类型一起使用。
class Data
{
public:
template <typename T>
void AddField(T val)
{
std::stringstream s;
s << val;
m_data += s.str();
}
private:
std::string m_data;
};
class A
{
public:
A(int val) : m_k(val) {}
private:
int m_k;
};
int main() {
Data x;
// Add basic types
x.AddField(1);
x.AddField("_");
x.AddField(0.5);
**// Add a vector**
std::vector<int> v;
v.push_back(99);
x.AddField(v); <==== Not OK
**// Add a user defined type**
A a(-45);
x.AddField(a); <==== Not OK
return 0;
}
谢谢!
您可以为向量定义 operator<<()
(示例
template <typename T>
std::ostream & operator<< (std::ostream& s, std::vector<T> const & v)
{ for ( auto const & e : v ) s << e; return s; }
(,一个用于A
(例如,如果您添加 A
a get_m_k()
方法,则
std::ostream & operator<< (std::ostream& s, A const & a)
{ return s << a.get_m_k(); }
相关文章:
- 类模板静态数据成员定义/声明/初始化
- 默认移动成员定义为已删除,而未定义特殊成员?
- 条件C++类成员定义
- 将类类型成员定义为公共和私有之间有什么区别?
- 有没有办法为静态对象成员定义一个符合开关标准的常量?
- C 不能将带有父类指针作为类型的静态模板成员定义引用
- 如何在 .cpp 文件中为私有类成员定义 friend 运算符<<而不是在标头中
- 为类模板的单个成员定义专用化
- 使用命名空间进行函数成员定义
- C 类静态结构成员定义
- C 替代成员定义
- C++:如何将数据成员定义为 const
- 模板超类的静态成员定义
- 如何为联合成员定义typedef
- 为类模板的枚举成员定义 std::hash
- 在越界成员定义的类型说明符中是否可以省略typename
- 更改成员定义的顺序会破坏内存
- 为什么不允许将类成员定义的' static '关键字放在命名空间范围内?
- 我是否应该在将实现委托给子类的类中包含成员定义?
- 在非限定id后的静态数据成员定义中使用的名称