c++ - 将任何类型与 true 进行比较的 C++ 类方法
问题描述
我正在尝试使用模板编写一个小测试类,为简单起见,可以检查任何类型是否等于 true 或等于另一个值。
// generic value of some sort
template<class T>
class Value {
public:
T value;
};
// generic tester class
class Test {
public:
Value value_;
Test();
~Test();
void SetValueToTest(Value value){
this->value_ = value;
}
bool IsTrue(){
return this->value_ = true;
}
template<class T>
bool IsEqual(T value){
return this->value_ = value;
}
};
到目前为止,我有这个主要错误
error: invalid use of template-name ‘Value’ without an argument list
我认为它希望我指定类型,<int>
但这会破坏尝试将任何类型测试为真、等于其他类型等的目的。
解决方案
Value
不是类型,它是类模板。Value<int>
是一种类型,Value<double>
是一种类型,等等。
您可以制作Test
一个能够在Value
其中使用的类模板。
这是一个演示程序:
// generic value of some sort
template<class T>
class Value {
public:
T value;
};
// generic tester class
template<class T>
class Test {
public:
Value<T> value_;
Test() {}
~Test() {}
void SetValueToTest(Value<T> value){
this->value_ = value;
}
bool IsTrue(){
return (this->value_.value == true);
}
template<class T2>
bool IsEqual(Value<T2> value){
return (this->value_.value == value.value);
}
};
#include <iostream>
int main()
{
Test<int> a;
a.SetValueToTest(Value<int>{20});
std::cout << std::boolalpha << a.IsTrue() << std::endl;
std::cout << std::boolalpha << a.IsEqual(Value<short>{20}) << std::endl;
std::cout << std::boolalpha << a.IsEqual(Value<short>{30}) << std::endl;
}
及其输出
false
true
false
推荐阅读
- javascript - 如何在 node.js 中缓存变量
- netbeans - NetBeans 12.2 未连接到 Xdebug 版本 3
- python - 仅使用 numpy,有没有办法创建方波?
- javascript - 从 Wordpress REST API 获取图像(网络托管)
- gitlab-ci - gitlab-ci:有没有办法可视化或模拟不同分支/标签名称的管道?
- flutter - 颤振的 OpenStreetMap
- laravel - 在编辑表单中显示多行数据 Laravel
- ansible - Ansible podman 部署
- python - 如何在 django 的 loginView 表单中创建“记住我”复选框?
- react-native - react Native中具有不同高度和宽度的网格视图