C++ 用户定义类型的成员模板
下面有一个简单的示例,其中AddField()是成员模板 我需要做什么才能使AddField(T)与用户定义的类型或诸如vector之类的类型一起工作。它适用于基本类型C++ 用户定义类型的成员模板,c++,c++11,C++,C++11,下面有一个简单的示例,其中AddField()是成员模板 我需要做什么才能使AddField(T)与用户定义的类型或诸如vector之类的类型一起工作。它适用于基本类型 class Data { public: template <typename T> void AddField(T val) { std::stringstream s; s << val; m_data += s.str();
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;
}
类数据
{
公众:
样板
void AddField(T val)
{
std::strings;
你可以定义一个操作符,你应该编辑你的帖子来包含你得到的任何编译错误,但我怀疑其中一个可能是没有操作符
template <typename T>
std::ostream & operator<< (std::ostream& s, std::vector<T> const & v)
{ for ( auto const & e : v ) s << e; return s; }
std::ostream & operator<< (std::ostream& s, A const & a)
{ return s << a.get_m_k(); }