在C++中,模板的非类型参数可以是整数、枚举、指针、引用、数组和对象等。下面是一些不同类型的模板非类型参数的代码示例:
template
void printValue() {
std::cout << "Value is: " << N << std::endl;
}
int main() {
printValue<10>(); // 输出: Value is: 10
printValue<20>(); // 输出: Value is: 20
return 0;
}
enum class Color { Red, Green, Blue };
template
void printColor() {
std::cout << "Color is: ";
switch (C) {
case Color::Red:
std::cout << "Red";
break;
case Color::Green:
std::cout << "Green";
break;
case Color::Blue:
std::cout << "Blue";
break;
}
std::cout << std::endl;
}
int main() {
printColor(); // 输出: Color is: Red
printColor(); // 输出: Color is: Green
return 0;
}
template
void printPointerValue() {
std::cout << "Value at the pointer: " << *Ptr << std::endl;
}
int main() {
int value = 42;
printPointerValue<&value>(); // 输出: Value at the pointer: 42
return 0;
}
template
void printReferenceValue() {
std::cout << "Value of the reference: " << Ref << std::endl;
}
int main() {
int value = 42;
printReferenceValue(); // 输出: Value of the reference: 42
return 0;
}
template
void printArray() {
std::cout << "Array values: ";
for (int i = 0; i < N; ++i) {
std::cout << Arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
printArray<5, arr>(); // 输出: Array values: 1 2 3 4 5
return 0;
}
class MyClass {
public:
MyClass(int value) : value_(value) {}
int getValue() const {
return value_;
}
private:
int value_;
};
template
void printObjectValue() {
std::cout << "Object value: " << Obj.getValue() << std::endl;
}
int main() {
MyClass obj(42);
printObjectValue(); // 输出: Object value: 42
return 0;
}
这些示例展示了不同类型的模板非类型参数的使用方法。请注意,对于数组类型的非类型参数,需要将数组的大小作为额外的模板参数传递给模板函数。
上一篇:不同类型的论点?