创建我自己的向量类,很多错误
Creating my own vector Class, a lot of errors
我对C++相当陌生,使用它创建类,尤其是使用模板类。我收到了很多错误消息,但我不确定如何解决它们,希望这里有人可以提供帮助,提前感谢。
班级:
template <class T> class Vector {
public:
typedef T* iterator;
Vector();
iterator begin();
iterator end();
int size();
iterator insert(iterator position, const T& item);
void alloc_new();
private:
T items;
int used;
};
template <class T> Vector::Vector() {
items = [1000];
used = 0;
}
template <class T> iterator Vector::begin() {
return items;
}
template <class T> iterator Vector::end(){
return items + used;
}
template <class T> int Vector::size() {
return used;
}
template <class T> iterator Vector::insert(iterator position, const T& item){
if (used+1 > items){
alloc_new();}
items[position] = item;
used =+ 1;
}
template <class T> void Vector::alloc_new(){
items = used*2;
T tmp[] = items;
for (int i = 0; i < used; i++){
tmp[i] = items[i];
}
delete items;
items = tmp;
}
错误消息:
main.cpp:67: 错误:在没有模板参数的情况下使用"模板类 Vector"main.cpp:67:错误:ISO C++禁止声明没有类型的"矢量"main.cpp:67: 错误:模板 'template int Vector((' 的声明main.cpp:52:错误:与以前的声明"模板类 Vector"冲突main.cpp:52:错误:以前的非函数声明"模板类 Vector"main.cpp:67: 错误:与函数声明"template int Vector(("冲突main.cpp: 在函数 'int Vector((' 中:主.cpp:68:错误:"项目"未声明(首次使用此函数(main.cpp:68:错误:(每个未声明的标识符只针对它出现的每个函数报告一次。main.cpp:68:错误:"["标记之前的预期主表达式主.cpp:69:错误:"已使用"未声明(首次使用此函数(主.cpp: 在全球范围内:main.cpp:72:错误:"Vector"之前的预期构造函数、析构函数或类型转换main.cpp:72:错误:在"矢量"之前应为";"main.cpp:76:错误:"Vector"之前的预期构造函数、析构函数或类型转换main.cpp:76:错误:在"矢量"之前预期";"main.cpp:80:错误:"模板类 Vector"在没有模板参数的情况下使用main.cpp: 在函数 'int size((' 中:main.cpp:81:错误:"已使用"未声明(首次使用此函数(主.cpp: 在全球范围内:main.cpp:84:错误:"Vector"之前的预期构造函数、析构函数或类型转换main.cpp:84:错误:在"矢量"之前预期";"main.cpp:94:错误:在没有模板参数的情况下使用"模板类 Vector"main.cpp: 在函数 'void alloc_new((' 中:main.cpp:95:错误:"项目"未声明(首次使用此函数(main.cpp:95:错误:"已使用"未声明(首次使用此函数(
您需要指定模板参数。 例如:
template <class T> Vector<T>::Vector() {
items = [1000]; // note, this is also invalid syntax
used = 0;
}
-
Vector::vector()
需要更改为Vector<T>::vector()
.以下成员函数也是如此。 -
iterator
前面需要加上Vector<T>
作为Vector<T>::iterator
,因为iterator
是在类Vector
中声明
的
由于迭代器是 Vector 的嵌套类型,因此更改
template <class T> iterator Vector::begin() { return items; }
自
template <typename T> Vector<T>::iterator Vector<T>::begin() { return items; }
使用涉及迭代器的所有其他方法也执行此操作。
相关文章:
- 0-1背包代码中的错误.我的代码中有什么错误
- 错误-我无法在VS2019中打开新的Qt项目
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- C++出现控制台错误.我无法识别源代码的问题
- 将矩阵乘以我自己的输入的向量
- 如何正确包含我自己的标头?
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 预期'while'或预期'}' 之前回答是,但我自己无法修复
- 为什么__builtin_popcount比我自己的比特计数功能慢?
- 在wxWidgets的事件中包含我自己的数据的最佳方法是什么?
- 我可以启用有关我自己的变异功能错误使用的指定符的警告
- 使用我自己的 C++/CLI DLL 的 C#:错误:语言不支持'mytrainOp'
- 我自己的堆栈类中出现C++错误
- 使用 MPL::fold 与占位符和我自己的结构错误
- 使用我自己的 plus() 函数时出现奇怪的 g++ 编译器错误 ( "std::plus is not a function" )
- 创建我自己的向量类,很多错误
- 编写我自己的字符串类"reference to ‘string’ is ambiguous"但出现编译错误
- 链接错误与我自己的c++库