当前位置:  开发笔记 > 编程语言 > 正文

如何使用const属性赋值类?

如何解决《如何使用const属性赋值类?》经验,为你挑选了1个好方法。

我有一个简单的点类:

class Point {
public:
    Point(const double, const double);
    /** This constructor creates invalid point instance **/
    Point();
    ~Point();
    const double x;
    const double y;
    /** This returns true if one of the values is NaN **/
    bool isInvalid() const;
    /** Returns true if coordinates are equal **/
    bool equal(const Point& p) const;
};

价值观xyconst这样,我可以肯定,他们永远不会改变.他们应该永远不变.问题是我无法分配给变量持有Point:

Point somePoint;

  ... meanwhile, things happen ...

//ERROR:  use of deleted function 'Point& Point::operator=(const Point&)'
somePoint = Point(x, y); 

我知道分配是一个问题因为somePoint.x = something被禁止.我需要在渲染过程中使用point来保持最后一个点值:

Point lastPoint;

PointInGraph* point = graphValues.last;

while((point = point->next())!=nullptr) {
  // calculate pixel positions for point 
  double x,y;
    ...

  if(!lastPoint.isInvalid())
    drawer.drawLine(round(lastPoint.x), round(lastPoint.y), round(x), round(y));
  // ERROR: use of deleted function 'Point& Point::operator=(const Point&)'
  lastPoint = Point(x, y);
}

那么const在类属性中也可以简单地创建该类类型的任何变量const吗?或者有解决方法吗?



1> emlai..:

这是不可能的.它需要修改const值.

而不是制造xy自己const,使它们不是,而是为它们const提供const 接口,即通过使它们成为私人并提供const吸气剂.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有