gpt4 book ai didi

c++ - 无法使用来自单独 .cpp 的模板化成员编译/链接类

转载 作者:行者123 更新时间:2023-11-28 06:20:07 25 4
gpt4 key购买 nike

<分区>

我有一个 C++,它使用在单独的 .hpp/.cpp 文件中指定的类。这个类的特殊性在于它有一个模板化的成员函数,它接受一个 const std::vector 作为参数,这就是问题的根源。

myclass.hpp:

class myclass {

//...
public:
myclass();
template <typename _t> int myfunction(const std::vector<_t> *values);

//...
}

myclass.cpp:

#include "myclass.hpp"

//...
template <typename _t> int myclass::myfunction(const std::vector<_t> *values){
// do stuff
return 0;
}

和我的main.cpp:

#include "myclass.hpp"

int main(int argc, char const *argv[]){

myclass foo;
std::vector<int> bar(5,100);
foo.myfunction(bar);

return 0;
}

但是,当我尝试使用 g++ main.cpp myclass.cpp -o main -I/usr/include 编译所有这些时,我得到了错误:

undefined reference to `int myclass::myfunction<int>(std::vector<int, std::allocator<int> > const*)' 

这很奇怪,因为语法似乎 是正确的(并且它通过了 g++ 检查)。问题不在于我如何构建代码或文件设置,因为如果我注释掉模板函数,我就可以编译代码。

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