我有一个通常返回一些Point
结构的函数:
/** Assume:
private std::vector<Point> points_ **/
Point MyPoints::getLastPoint() const {
//I need to return [0, 0] if there's no data
if(points_.empty())
return ???;
else
return points[points.size()-1];
}
结构真的很简单:
struct Point {uint_32 x, uint_32 y}
我需要将???
替换为可以返回的结构初始化。我唯一能想到的就是制作const
属性:
const Point ZERO_POINT = {0,0};
虽然这可能是我所做的,但我想知道是否有一种方法来初始化结构并立即返回它,例如从一些现有变量生成结构时。
此外,您必须假设您无法改变原始结构。我问及C++11
标准,并使用Visual Studio 2010(虽然支持大多数C ++ 11)。
答案 0 :(得分:3)
如果编译器支持C ++ 11统一初始化并且不需要显式定义Point
构造函数,则以下内容应该有效:
return {0,0};
如果不支持统一初始化,则在Point
结构上定义构造函数并明确调用它:
return Point(0, 0);
答案 1 :(得分:1)
由于你想保存线路,这里是一行
Point MyPoints::getLastPoint() const
{
return ( points_.empty() ? Point{0, 0} : points[points_.size() - 1] );
}