C++ (C+;+;)当函数返回类或结构之类的数据时,我希望返回错误或错误数据
我是学计算机结构的新手 在这种情况下C++ (C+;+;)当函数返回类或结构之类的数据时,我希望返回错误或错误数据,c++,return,C++,Return,我是学计算机结构的新手 在这种情况下 class Node{ private: int data; public: Node(int num); int AddNum(int num); } Node::Node(int num) : data(num) { } int::int AddNum(int num) { if(data + num > 10) return num; else return
class Node{
private:
int data;
public:
Node(int num);
int AddNum(int num);
}
Node::Node(int num) : data(num) { }
int::int AddNum(int num)
{
if(data + num > 10)
return num;
else
return false; // this point!!
}
我如何传递失败或错误的信号
谢谢你读了我那可怕的英语句子。。我还在学英语
我的英语读得很好,但写作技巧很差:(
祝您度过愉快的一天~函数
AddNum
返回int
,因此您无法返回bool
。在这种情况下,您有几个选项:
bool
,并通过引用参数将结果传回。例如:Node n;
int result;
bool success = n.AddNum(num, result);
函数
AddNum
返回int
,因此不能返回bool
。因此在这种情况下,您有几个选项:
bool
,并通过引用参数将结果传回。例如:Node n;
int result;
bool success = n.AddNum(num, result);
-std=C++17
添加到编译器标志中(或在旧版本的GCC/Clang中添加-std=C++1z
)
要从可选项中获取值,可以像使用指针一样对其使用*
运算符。或者,也可以使用value()
成员函数:
std::cout << "the result is: " << result.value();
std::cout您可以使用。确保在编译器中启用了C++17支持。如果您使用的是GCC或Clang,则意味着将-std=C++17
添加到编译器标志中(或在旧版本的GCC/Clang中为-std=C++1z
)
要从可选项中获取值,可以像使用指针一样对其使用*
运算符。或者,也可以使用value()
成员函数:
std::cout << "the result is: " << result.value();
std::cout您可以返回std::pair
或包装在结构中的联合或自定义结构或引发异常
//Using pair. If first element is true, only then
//second element hold meaning
int::int AddNum(int num)
{
if(data + num > 10)
return make_pair(true, num);
else
return make_pair(false, -1);
}
您可以返回std::pair
或包装在结构中的联合或自定义结构或引发异常
//Using pair. If first element is true, only then
//second element hold meaning
int::int AddNum(int num)
{
if(data + num > 10)
return make_pair(true, num);
else
return make_pair(false, -1);
}
有各种各样的方法。如果不知道您的具体需求(不同于您要求的解决方案类型),就不可能建议哪些选项是合适的。一种简单的方法是向名为(比如)的结构/类添加成员<代码> iSuffix,根据需要在您的函数中设置该成员,并调用调用方应检查的文件。一种更具侵入性的方式,通常只在错误是关键的情况下使用,因此用户需要强制处理该原因,即抛出异常。BTW, INT:INT/INDEX>不是有效的C++。有各种方式。如果不知道您的具体需求(不同于您所要求的解决方案类型),则无法建议哪些选项是合适的。一种简单的方法是向名为(比如)的结构/类添加成员<代码> iSuffix,根据需要在您的函数中设置该成员,并调用调用方应检查的文件。一种更具侵入性的方式,通常只在错误是关键的情况下使用,因此用户需要强制处理该原因,即抛出异常。BTW,<代码> int:INT/COM>不是有效C++。谢谢!工作!!当我用韩语问这个问题的时候,人们不理解,即使我是韩国人…谢谢!我用过了!工作!!当我用韩语问这个问题的时候,人们甚至不懂韩语…谢谢你的好意!实际上,我对这个解决方案比上一个熟悉…因为我对C++的了解很少。STL……我必须多学习,多为你的好建议!事实上,我对这个解决方案比上一个熟悉…因为我对C++ STL了解得很少……我必须学习更多的东西。
//Using pair. If first element is true, only then
//second element hold meaning
int::int AddNum(int num)
{
if(data + num > 10)
return make_pair(true, num);
else
return make_pair(false, -1);
}