내 코드를 컴파일했고이 오류 메시지가 터미널에 나타 났으면 그게 무슨 뜻인지 전혀 알지 못합니다. 누군가 설명하거나 힌트를 줄 수 있습니까?이 오류가 무엇을 의미하는지 전혀 모르겠다
/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;
}
고마워의 구현입니다. 나는이 문제를 해결한다. 템플릿은 구현 파일이 아니라 헤더 파일에 정의되어야합니다. 당신이 당신의 컴파일러를 요구하는
template <typename PowerN> vector<int> apply(vector<int>&, PowerN)
그리고 당신이 그것을라고하지만 실제로 소스의이 기능을 위해 몸을 쓴 적이 :
코드 – balaji
을 공유 할 수 있다면 몇 가지 코드를 보여줄 수 있습니까? – Claudiordgz
전화를 걸 때 변수/개체 중 하나의 철자가 틀린 것 같습니다. 우편 번호! – Coderchu