gpt4 book ai didi

c++编译错误链接器命令失败

转载 作者:行者123 更新时间:2023-11-30 03:40:57 25 4
gpt4 key购买 nike

我是C++新手,对搭建C++项目不熟悉。我想写一个简单的 vector 类(不是默认的 c++ vector )所以我写了一个测试程序。

这是我的头文件("Vector.h")

# define Vector_H
typedef int Rank;
template <typename T> class Vector {
protected:
Rank _size; int _capacity; T* _elem;
void copyFrom ( T const* A, Rank lo, Rank hi );
public:
Vector ( T const* A, Rank n ) { copyFrom ( A, 0, n ); }
T& operator[] ( Rank r ) const;
};

这是我的 Vector.cpp 文件:

#include "Vector.h"
typedef int Rank;
template <typename T>
void Vector<T>::copyFrom ( T const* A, Rank lo, Rank hi ) {
_elem = new T[_capacity = 2 * ( hi - lo ) ]; _size = 0;
while ( lo < hi )
_elem[_size++] = A[lo++];
}

template <typename T>
T& Vector<T>::operator[] ( Rank r ) const
{ return _elem[r]; }

这是我的 main.cpp:

#include <iostream>
#include "Vector.h"
using namespace std;
int main() {
int a[10]={1,3,5,7,9};
Vector<int> c(a,5);
cout<<c[4]<<endl;
return 0;
}

当我将这 3 个文件放入我的 Xcode 项目时,它返回错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)我不知道该怎么做。如果我将所有这些都放在一个 cpp 文件中,我的代码就可以正常工作。

最佳答案

模板定义不能拆分到不同的文件中。您应该将 Vector.cpp 中的所有内容复制到您的 Vector.h 中。或者将 Vector.cpp 重命名为 *.cpp 以外的任何名称(可能是 Vector.imp),然后在 Vector.h 的末尾添加 #include "Vector.imp"。

关于c++编译错误链接器命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37649195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com