我有一個相對較小的C++項目,我決定製作一個Utils頭文件,它只包含一些小的輔助函數等。當我聲明使用模板的函數時, ,然後我試圖做一個功能,它不需要模板,突然它不起作用。無法聲明沒有模板的C++函數
我得到的結果是鏈接器錯誤;已經在(文件).obj
定義我甚至不能聲明一個簡單的無效函數,沒有模板的一切都給出了一個鏈接器錯誤。
我沒有任何想法可能導致這種情況。這裏是頭文件的代碼...在此先感謝。
#pragma once
namespace Utils
{
std::string GetActiveWindowTitle()
{
// This doesnt work either, also gives linker error.
return active_window;
}
template<typename T>
void Print(char * value, T printValue)
{
std::cout << value << ": " << printValue << std::endl;
}
template<typename T>
void Print(T printValue)
{
std::cout << "DEBUG: " << printValue << std::endl;
}
void PrintStr(std::string str)
{
// This doesn't work because it doesnt have the template, it gives a linker error
std::cout << "DEBUG: " << str.c_str() << std::endl;
}
}
加上'inline'的函數定義在你的頭,要不然移動功能定義到一個單獨的翻譯單元(.cpp文件) 。你不需要'函數模板'的'inline'說明符* – WhiZTiM
提示:模板隱式'inline'。 – Rakete1111