模板 (C++) - 不确定是否正确
Template (C++) - not sure if correct
我是一名学生,我正在为C++中的数组做一个静态库,所以我不必每次在上课时都重写代码。
我在中学读二年级,所以我不是专家。我希望我的代码与所有类型的(int,float,ecc)兼容,但我遇到了一些麻烦。
你能看看我的代码吗?
// 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;
应该设置为局部变量,则无需将它们作为全局变量。
保留 以
_
开头后跟大写字母的宏,因此_SLARRAY_
是非法的,请重命名它。实现赋值运算符和复制构造函数,否则所有复制都将是浅层。
我假设你不能使用std
,否则你知道容器已经存在,对吧?
相关文章:
- 检查输入是否不是整数或数字
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 是否允许从具有一些不确定值的对象分配
- 确定源文件是否不规律地依赖间接包括标准标头
- 如何确定名称和 lname 是否不在文件中
- 不确定是否在单链表中显示唯一数据
- 两条未签名短裤的乘法是否真的会导致不确定的行为
- [C++}不确定这是否可能
- 不确定我在提升日志中的线程 ID 是否正确
- 有没有办法确定日期/时间是否不存在
- 模板 (C++) - 不确定是否正确
- 确定 int 是否不为 0,没有 if 语句
- C++常量投射,不确定这是否安全
- 不确定是否规范化加载为每个2字节的双值
- 如何确定 give 属性是否不是从基类继承的?
- 指向从另一个结构创建的数组的指针(不确定措辞是否正确)C++
- ConvertLengthToIpv4Mask(),不确定我是否得到正确的
- 记忆的屏障,不确定我是否可以使用放松
- C++程序-不确定是否,我提供了正确的解决方案
- C++:不确定代码是否可多线程