c++ - 有没有办法将输入类型包装到 C++ 中的模板类?
问题描述
长话短说,我写了一段代码,如下所示。这个片段包括一个两种类型的模板类。它的名字是Num。
#include <iostream>
using namespace std;
template <typename N, typename U>
class Num
{
public:
Num(): num0(3), num1(4.56)
{
cout << "This is number: " << num0 << endl;
cout << "This is number: " << num1 << endl;
}
private:
N num0;
U num1;
};
int main()
{
Num<int, double> num();
return 0;
}
代码工作正常,但由于某种原因,我需要在传递给类实例时包装类型。更清楚地说,而不是:
Num<int, double> num();
我需要有这样的东西:
Num<(int, double)> num();
当您输入要测试的类型作为 TYPED_TEST_CASE 宏时,我希望它可以在 google typed-test 中测试两个类型的类。
解决方案
如果您正是需要这种语法
Num<(int, double)> num();
不,我不认为这是可能的。
如果您只需要将几种类型包装在一个中,请确保:您可以使用std::tuple
专业化
template <typename>
class Num;
template <typename N, typename U>
class Num<std::tuple<N, U>>
{
public:
Num(): num0(3), num1(4.56)
{
cout << "This is number: " << num0 << endl;
cout << "This is number: " << num1 << endl;
}
private:
N num0;
U num1;
};
// ...
Num<std::tuple<int, double>> num{};
或无数其他类似的方式。
推荐阅读
- c++ - 定义用 const int 绑定的数组不起作用
- android - 将 app bundle 上传到 google play 失败,没有提示
- javascript - python - 如何使用Javascript Fetch Function在python django中发布数据编辑和重新提交数据?
- oracle - Oracle查询排除特定日期时间以平均数据
- javascript - 按键未触发事件
- arrays - 如何以角度从数组对象返回最大值
- postgresql - RDS Postgres - 如何避免将“密码”语句写入日志文件
- python - 我在 Python 中收到以下错误“列表索引必须是整数或切片,而不是 NoneType”
- python-3.x - 如何将 Mathematica 中的代码转换为 Python?
- google-analytics - 如何在谷歌分析中设置 Rest API 并在 .net 中使用谷歌控制台配置所有端点