如何使一个函数内的变量可以被主函数访问?

我有一些简单的代码,我无法正确运行。基本上,我有一个自定义功能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

回到顶部