c++ - 自定义 vector 类 C++

标签 c++ class vector

<分区>

我正在制作自己的 vector 类。

.h:

template<typename T>
class MyVector
{
private:
    T *elements;
    int elementCount;
public:
    MyVector();
    MyVector(int size);
    void push_back(T value);
    void pop_back();
    int size();
    T at(int index);
    bool empty();
    void clear();
    void swap(MyVector v2);
};

.cpp:

template<typename T>
MyVector<T>::MyVector()
{
    elementCount = 0;
    elements = new int[elementCount];
    elements = (int *) realloc (elements, elementCount * sizeof(int));
}

主要.cpp:

#include "MyVector.h"

int main()
{
    MyVector<char> myTestVector;   
    return 0;
}

尝试简单地创建 MyVector 对象时出现错误,错误是:

MyVector::MyVector(), referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我最初编写该类是为了处理一个已经指定的类型,现在我需要它处理任何给定的类型。

为什么会出现此错误?提前致谢!

最佳答案

C++ 模板必须在头文件中有它们的定义。这是因为编译器在编译时为每个实例类型生成目标文件。如果您将声明移动到 .h 文件,您的代码应该链接正常。

参见 here以获得关于模板如何/为何工作的体面概述。

关于c++ - 自定义 vector 类 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231343/

相关文章:

c# - Visual Studio 多个项目 C# 和 C++ 文档

c++ - 用于枚举的正确转换是什么?

c++ - extern "C"拆解导致奇怪的链接器错误

javascript - 如何计算 html 元素的类更改的次数?

java - 将类作为方法中的参数传递并在 If 语句中使用此参数

c - 根据另一个数组重新排列

c++ - 在 visual studio 中创建 exe 文件的拷贝

ios - 以非编程方式使用 (UIView) 类 - Swift

java - ArrayList 和 Vector 有什么区别?

c++ - 使用 rapidjson 读取子对象 vector