用户定义类型的成员模板

Member template for user defined types

本文关键字:成员 定义 类型 用户      更新时间:2023-10-16

我有一个简单的示例,其中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(); }