回 帖 发 新 帖 刷新版面

主题:问大侠们一个模板的问题

我定义了一个模板
template<class C>class String{
    struct Srep;
    Srep *rep;
    public:
        String();
        String(const C*);
        String(const String&);
        C read(int i) const;
};

template<class C> struct String<C>::Srep{
    C* s;//到元素的指针
    int sz;//元素个数
    int n;
    
};

template<class C> String<C>::String<C>()
{
    rep=new Srep(0,C());//**************************error
}

int main()
{
    String<char> buf;
    return 0;
}
在标记的地方报如下错误
error C2514: 'String<char>::Srep' : class has no constructors
        E:\OpenCV_Test\childclass\childclass.cpp(6) : see declaration of 'Srep'
        E:\OpenCV_Test\childclass\childclass.cpp(48) : while compiling class-template member function '__thiscall String<char>::String<char>(void)'
Error executing cl.exe.
望大侠们赐教

回复列表 (共3个回复)

沙发

结构体 struct Srep 没有定义

板凳


初学模板,有些弄不明白
结构体 struct Srep 的定义我觉得在下面的语句就已经定义,
template<class C> struct String<C>::Srep{
    C* s;//到元素的指针
    int sz;//元素个数
    int n;
    
};

3 楼

rep=new Srep(0,C());
你的结构体中没有接受两个参数的构造函数

我来回复

您尚未登录,请登录后再回复。点此登录或注册