簡體   English   中英

模板鏈接問題C ++

[英]Template linking problem C++

我有一個模板類定義,需要在cpp文件中。 采用http://www.parashift.com/c++-faq-lite/templates.html#faq-35.13 ,我做了類似這樣的事情:

 // File "foo.cpp"
 #include <iostream>
 #include "foo.h"

 template<typename T> void foo()
 {
  std::cout << "Here I am!\n";
 }

 template void foo<int>();

我從.cpp文件中實例化模板。 但是,我需要不同的類型,如foo(string)等,我意識到我只能實例化一次。 我該怎么辦呢?

謝謝。

您應該能夠為您需要的每種類型實例化foo

template void foo<int>();
template void foo<double>();
template void foo<std::string>();

這有點繁瑣,這是許多庫傾向於在頭文件中提供模板函數實現的原因,因此任何實例化都可用於包含頭的任何cpp文件。

模板專門化應位於頭文件中的單獨轉換單元(.cpp文件)和模板(通用)定義中。 在foo.h中添加定義

template <typename T> void foo ()
{
    std::cout << "Here I am! << std::endl;
}

在foo.cpp中使用它

foo <int> ()
foo <std::string> ();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM