Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法使用std::get到达元组元素 原职:_C++_Stl_Stdtuple - Fatal编程技术网

C++ 无法使用std::get到达元组元素 原职:

C++ 无法使用std::get到达元组元素 原职:,c++,stl,stdtuple,C++,Stl,Stdtuple,我在一个复杂的项目中有一个对象。因此,我可能无法提供所有这些类的非常详细的API,但我试图在不需要细节的情况下抽象我的问题 首先,下面的代码运行良好: auto ha = std::get< 1 >( d.data ).data; 对于上面的代码,编译器说 no matching function for call to ‘get(std::tuple<>&)’ int ma = std::get< 0 >( ha ); 我无法理解为什么不能使用s

我在一个复杂的项目中有一个对象。因此,我可能无法提供所有这些类的非常详细的API,但我试图在不需要细节的情况下抽象我的问题

首先,下面的代码运行良好:

auto ha = std::get< 1 >( d.data ).data;
对于上面的代码,编译器说

no matching function for call to ‘get(std::tuple<>&)’ int ma = std::get< 0 >( ha );
我无法理解为什么不能使用std::get here来访问std::tuple的第一个元素?谁能给我一些建议吗

使现代化 谢谢大家指出我应该提供更多信息。在我发帖之前,我完全理解这一点。但是这里类的实现是 基于模板,如此庞大和分层,我无法提供所有这些

因此,我试图询问任何可能导致通过std::get访问std::tuple元素失败的一般想法

也许我面临的问题不适合在这里公开讨论。很抱歉耽误了你的时间。我现在不能删除这个问题,也许你们中的一个人现在可以帮我结束这个问题


谢谢您的时间。

您无法从没有元素的元组中获取第0个元素

这与索引0处的空数组的概念相同

编辑:为了澄清,我怀疑您的代码被调用了两次。线路

auto ha = std::get< 1 >( d.data ).data;
int ma = ha;
这表明在第一种情况下,ha是一个空元组。在第二种情况下,ha有一个元素

替代代码

auto ha = std::get< 1 >( d.data ).data;
auto ma = std::get< 0 >( ha );

d是什么,什么是数据?你需要提供一个答案。有人能给我一些建议吗?你不认为至少提供那个元组定义是个好主意吗?我们的心灵感应机器今天坏了,抱歉。猜测哪些变量有错误信息是一个。。。奇怪的编程方式。@Jabberwocky谢谢你Jabberwocky,因为我认为std::get无论如何都应该适用于tuple,所以我没有附上细节。我很快就会添加它。@Summerson好的,请保持最小值。你怎么知道有一个元组没有涉及任何元素?@Slava:因为错误:没有匹配函数来调用'getstd::tuple&'谢谢你的想法,但这里我确实有一个元素,可以从调试器中看到。@Summerson:谢谢你的澄清,我已经更新了我的答案来解释原因。
no matching function for call to ‘get(std::tuple<>&)’ int ma = std::get< 0 >( ha );
auto ha = std::get< 1 >( d.data ).data;
int ma = ha;
cannot convert ‘std::tuple<>’ to ‘int’ in initialization int ma = ha;
cannot convert ‘std::tuple<PointStreamColor<float> >’ to ‘int’ in initialization
auto ha = std::get< 1 >( d.data ).data;
auto ma = std::get< 0 >( ha );
no matching function for call to ‘get(std::tuple<>&)’ int ma = std::get< 0 >( ha );