的靜態變量是我的代碼:未定義引用類模板下面
// types.h
template <typename T>
struct type_to_char {};
template <>
struct type_to_char<char> {
static constexpr char str[] = "baz";
};
// main.cpp
#include <iostream>
#include <string>
#include "types.h"
int main() {
std::cout << type_to_char<char>::str << std::endl;
return 0;
}
在嘗試編譯,鏈接器返回一個錯誤: undefined reference to type_to_char<char>::str
我也遇到過this answer,但我不知道如何應用它在我的情況下,因爲模板沒有編譯。我應該在項目中放置一個單獨的文件.cpp
嗎?
constexpr
變量的聲明和定義有什麼區別?這樣的變量不能在沒有初始化器的情況下聲明,那麼爲什麼我應該在一個.cpp
文件中放置一個單獨的定義?
我希望在這個