模板(C) – 不确定是否正确
发布时间:2020-12-16 07:30:48 所属栏目:百科 来源:网络整理
导读:我是一名学生,我正在为C中的数组做一个静态库,所以我不必每次都在课程中重写代码. 我在中学读第二年,所以我不是专家. 我希望我的代码与所有类型(int,float,ecc.)兼容,但我遇到了一些麻烦. 你能看看我的代码吗? // slarray.h#if !defined _SLARRAY_#define _
我是一名学生,我正在为C中的数组做一个静态库,所以我不必每次都在课程中重写代码.
我在中学读第二年,所以我不是专家. 你能看看我的代码吗? // slarray.h #if !defined _SLARRAY_ #define _SLARRAY_ template <typename Tipo> class Array { public: void inserisci(); void visualizza(); void copia(Tipo*); Array(short); ~Array(); private: Tipo* ary; short* siz; }; #endif // slarray.cpp #include <iostream> #include "slarray.h" unsigned short i; unsigned short j; template <typename Tipo> void Array<Tipo>::inserisci() { for (i = 0; i < *siz; i++) { std::cout << i << ": "; std::cin >> ary[i]; } } template <typename Tipo> void Array<Tipo>::visualizza() { for (i = 0; i < *siz; i++) { std::cout << ary[i] << " "; } } template <typename Tipo> void Array<Tipo>::copia(Tipo* arycpy) { for (i = 0; i < *siz; i++) { *(arycpy + i) = ary[i]; } } template <typename Tipo> Array<Tipo>::Array(short n) { siz = new short; *siz = n; ary = new Tipo[n]; } template <typename Tipo> Array<Tipo>::~Array() { delete[] ary; delete siz; } 当我尝试使用以下方法对类进行初始化时,代码会给出错误: Array <int> vct(5); 解决方法
模板实现需要对专门化它们的翻译单元可见.
将实现从cpp移动到头文件. 其他几点说明: > unsigned short i; unsigned short j;应该是本地的,没有必要将它们作为全局变量. 我假设你不能使用std,否则你知道容器已经存在了,对吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |