C++ 類模板可以通過使用 static_assert 和 std::is_same 等類型萃取器來實現類型安全。
下面是一個簡單的示例,演示了如何使用 static_assert 和 std::is_same 來實現類型安全的類模板:
template <typename T>
class MyClass {
public:
MyClass(T value) : value_(value) {}
void printValue() const {
static_assert(std::is_same<T, int>::value, "T must be int");
std::cout << "Value: " << value_ << std::endl;
}
private:
T value_;
};
int main() {
MyClass<int> intObj(42);
intObj.printValue(); // 輸出 "Value: 42"
// 下面這行代碼會導致編譯錯誤,因為 T 不是 int
// MyClass<double> doubleObj(3.14);
return 0;
}
在這個示例中,我們定義了一個名為 MyClass 的類模板,它接受一個類型參數 T。我們在構造函數中使用 static_assert 和 std::is_same 來確保 T 只能是 int 類型。如果 T 不是 int 類型,編譯器將生成一個編譯錯誤。
這種方法可以確保在編譯時捕獲類型錯誤,從而提高代碼的類型安全性。