我正在尝试创建一个sameElements函数,我这样做:
util.h
#ifndef UTIL_H_INCLUDED
#define UTIL_H_INCLUDED
#include <vector>
class Util {
public:
template<typename T>
static bool sameElements(const std::vector<T> t1,const std::vector<T> t2);
private:
};
#endif
util.cpp
#include "util.h"
template<typename T>
bool Util::sameElements(const std::vector<T> t1,const std::vector<T> t2) {
return false; // Changed the actual logic to focus in the real problem
}
所以,我从 main.cpp
中调用此方法如下#include "util.h"
using namespace std;
int main()
{
std::vector<int> v1 = {1,2,3,4};
std::vector<int> v2 = {1,2,4,3};
std::cout << "sameElements(v1, v2): " << (Util::sameElements(v1, v2)) << std::endl;
return 0;
}
我希望打印“0”(假),但我得到了这个例外:
jscherman@jscherman:~/Workspace/cproject/src$ g++ main.cpp util.cpp --std=c++11 && ./a.out
main.cpp:(.text+0x55d): undefined reference to `bool Util::sameElements<int>(std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status
知道发生了什么事吗?