템플릿의 특정 측면에 대해 혼란스러워합니다. 여러 개의 소스 파일과 같은 템플릿 유형이있는 경우 템플릿의 소스 코드가 각 소스 파일에 대해 한 번 여러 번 컴파일됩니까?템플릿 Double Compilation?
예 test_two.h
#include "test_one.h"
std::vector<char> cars::are_speeding(double speed_limit)
{
std::vector<char> ans;
for (int i = 0; i < speeds.size() ; i++)
{
if(speeds[i] > speed_limit)
ans.push_back(1);
else
ans.push_back(0);
}
return ans;
}
test_one.cpp
#include <vector>
class cars:
{
std::vector<double> speeds;
vector<char> are_speeding(double);
}
test_one.h 아래
#include <vector>
class poodle
{
std::vector<double> odor_strength;
}
그래서 표준 두 번 컴파일 된 벡터 헤더의 소스 코드입니다 :: 벡터 아니면 한 번?
동일한 템플릿 매개 변수 유형에 대해 템플릿 인스턴스화를 한 번만 수행하면 링커가 올바르게 정렬됩니다. –