我正在使用第三方库中的结构将参数传递给库函数。
我希望有一个构造函数允许我快速创建一个结构,但是库没有提供结构。
有没有办法在我自己的代码中定义库外部的构造函数?如果没有,那么其他人是否会看到一个优雅的解决方案?
我的动机是我会节省一些速度,因为我不需要两次构造每个结构成员。
此外,我的代码更具可读性,因为我可以将结构创建压缩成一行而不是多行。
我想离开这个:
Point newPoint;
newPoint.x = someXValue;
newPoint.y = someYValue;
对此:
Point newPoint(someXValue, someYValue);
答案 0 :(得分:7)
如果您使用的是C ++ 11,则可以构造为:
Point newPoint {someXValue, someYValue};
如果你不是,假设这是一个POD结构,你可以:
Point newPoint = {someXValue, someYValue};
答案 1 :(得分:4)
使用工厂方法。但是你会得到另一个功能。
Point CreatePoint(int x, int y)
{
Point temp;
temp.x=x;temp.y=y;
return temp;
}
答案 2 :(得分:0)
这在性能视角或可读性方面可能不是最好的,但它是基本的,所以我只是在这里列出。
class MyPoint : public Point {
public:
MyPoint(int x, int y) { ... }
};
将对象构造为MyPoint
,然后可以直接将其传递给库函数。