返回首页

大家好。我有一个问题,我在C源代码。这是一个问题

我一类的Vector2D


class Vector2D

{

  public:

      double x;    double y;

      Vector2D():x(0.0), y(0.0)

      {}

      

      Vector(double val1, double val2):x(val1), y(val2)

      {}

}


当我在另一个类中要使用'的Vector2D"这样的默认参数
{C}
但我有一个错误:类型'的Vector2D'参数的默认参数类型'的Vector2D'

我怎样才能通过引用参数与默认参数?

回答

评论会员:游客 时间:2012/02/06
Stefan_Lang:我喜欢菲利普莫里斯解决方案更好,但这里是一个候补:codeprelang="c++"spanclass="code-keyword"class/spanVector2D{spanclass="code-comment"///spanspanclass="code-comment"...yourstuffgoeshere/span};spanclass="code-keyword"const/spanVector2Dnull_vector;spanclass="code-comment"///spanspanclass="code-comment"implicitelycallsdefaultconstructor/spanspanclass="code-keyword"bool/spanCanShoot(spanclass="code-keyword"const/spanVector2D&target=null_vector){spanclass="code-comment"///spanspanclass="code-comment"...yourcodehere/span}/pre/code的:菲利普・森
根据标准,它是非法的非const引用绑定到一个临时对象。 Visual Studio会错误地允许,但在第4级警告。

因此,函数应该被声明为:

{体C3}
然而,这将是最好添加在这种情况下超负荷:

{的C4}
这有可隐藏在实施"默认值"的优势。它可以允许进行一些优化
评论会员:游客 时间:2012/02/06
。mbue:看不出有任何问题:{C5的}问候:查克・奥图尔
的Vector2D()是在你的榜样,类的Vector2D的构造。你不能显式调用构造。相反,构造函数被调用时自动实例化一个类的对象。例如:{5233}或A类的构造函数的声明
Vector2D bar;
有一些编译器提供了,你不能隐藏参数