如何使一个函数内的变量可以被主函数访问?
我有一些简单的代码,我无法正确运行。基本上,我有一个自定义功能Create()
,根据用户输入创建一个变体(Point,Line,Circle)。然后我在主函数中调用这个函数,并试图调用我在Create()
中创建的变体。这显然不起作用。这怎么解决?如何使一个函数内的变量可以被主函数访问?
using boost::variant; //Using declaration for readability purposes typedef variant<Point, Line, Circle> ShapeType; //typedef for ShapeType
ShapeType Create()
{
int shapenumber;
cout<<"Variant Shape Creator - enter '1' for Point, '2' for Line, or '3' for Circle: ";
cin>>shapenumber;
if (shapenumber == 1)
{
ShapeType mytype = Point();
return mytype;
}
else if (shapenumber == 2)
{
ShapeType mytype = Line();
return mytype;
}
else if (shapenumber == 3)
{
ShapeType mytype = Circle();
return mytype;
}
else
{
throw -1;
}
}
int main()
{
try
{
cout<<Create()<<endl;
Line lnA;
lnA = boost::get<Line>(mytype); //Error: identified 'mytype' is undefined
}
catch (int)
{
cout<<"Error! Does Not Compute!!!"<<endl;
}
catch (boost::bad_get& err)
{
cout<<"Error: "<<err.what()<<endl;
}
}
回答:
您需要存储的返回值:
ShapeType retShapeType = Create() ; std::cout<<retShapeType<<std::endl;
....
lnA = boost::get<Line>(retShapeType);
您不能访问该范围之外是本地的范围(在这种情况下if/else
语句)值。您可以从您正在执行的函数中返回值,只需存储该值即可使用它。
以上是 如何使一个函数内的变量可以被主函数访问? 的全部内容, 来源链接: utcz.com/qa/258130.html