gpt4 book ai didi

c++ - Boost:创建一个返回变体的函数

转载 作者:行者123 更新时间:2023-11-30 02:59:38 25 4
gpt4 key购买 nike

我有一个作业要学习如何使用 boost::variant。我正在尝试创建一个函数,要求用户提供要创建的形状类型。然后创建请求的形状并将其分配给变体并返回它。我正在使用一个开关来完成此操作,但我遇到了默认语句的运行时错误。

我还收到来自编译器的警告:“warning C4715: 'ShapeVariant': not all control paths return a value”

如果用户输入的选择无效,我如何只打印一个字符串?

谢谢!

#include "boost/variant.hpp"

typedef boost::variant<Point,Line,Circle> ShapeType;

ShapeType ShapeVariant()
{
cout << "Please select a Shape Type\n1: Point\n2: Line\n3: Circle\n\nSelection: ";

int choice;

cin >> choice;

switch(choice)
{
case 1: return Point(); break;
case 2: return Line(); break;
case 3: return Circle(); break;
default: cout << "Invalid selection." << endl; break;
}
}

最佳答案

您可以抛出调用者捕获的异常并打印抛出异常的原因,而不是从函数中打印字符串。

switch(choice)
{
case 1: return Point(); break;
case 2: return Line(); break;
case 3: return Circle(); break;
default: throw std::runtime_error( "Invalid selection." );
}

在调用者中:

try {
auto result = ShapeVariant();
} catch( std::exception const& e ) {
std::cout << e.what() << std::endl;
}

关于c++ - Boost:创建一个返回变体的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com