0
我编译的代码,但此错误消息,我不知道这意味着什么终端出现了。 有人可以解释或给我一些提示吗?我不知道这个错误是什么意思
/tmp/ccZ95DTV.o: In function `main': homework3_test.cpp:(.text+0x514):
undefined reference to `std::vector<int, std::allocator<int> >&
apply<PowerN>(std::vector<int, std::allocator<int> >&, PowerN)'
collect2: ld returned 1 exit status
代码:
int test_power1, test_power2, test_power3;
PowerN power_three(3);
//test_power will now be 1
power_three(test_power1);
//test_power will now be 3
power_three(test_power2);
//test_power will now be 9
power_three(test_power3);
if (1 == test_power1) {
std::cout<<"PowerN works for 3**0! +10\n";
score += 10;
}
else {
std::cout<<"PowerN failed on 3**0!\n";
}
if (3 == test_power2 and 9 == test_power3) {
std::cout<<"PowerN works for 3**1 and 3**2! +10\n";
score += 10;
}
else {
std::cout<<"PowerN failed for 3**1 and 3**2!\n";
}
std::vector<int> test_power_v(3);
PowerN power_lessfour(-4);
//apply turns the vector into [1, -4, 16]
apply(test_power_v, power_lessfour);
std::vector<int> check_power_v;
check_power_v << 1 << -4 << 16;
if (test_power_v == check_power_v) {
std::cout<<"Applying PowerN with -4 works! +10\n";
score += 10;
}
else {
std::cout<<"Applying PowerN with -4 failed!\n";
}
那么,什么是加是我的老师给出的测试代码。如果你想看看我的代码实现,请告诉我。
所以这行代码是我的头文件
template <typename T>
vector<int>& apply(vector<int>& v, T function);
,这些都是在cpp文件
template <typename T>
vector<int>& apply(vector<int>& v, T function) {
for (vector<int>::iterator I = v.begin(); I != v.end(); ++I) {
function(*I);
}
return v;
}
谢谢你们的落实。我解决了这个问题。模板必须在头文件中定义,而不是在实现文件中定义。
如果ü可以共享代码 – balaji
你能告诉一些代码吗? – Claudiordgz
您可能在尝试调用其中一个变量/对象时拼错了它。邮政编码! – Coderchu