我可以在以下C ++代码中使用哪种解决方法来编译错误C2797?

时间:2015-04-10 18:56:56

标签: c++ visual-studio-2013

我在更新3之后一直在使用Visual Studio 2013并且收到错误C2797,"成员初始化程序列表或非静态数据成员初始化程序中的列表初始化未实现",请参阅{{3 }}。我想在以下C ++代码中使用一种解决方法,但我无法弄清楚或找出它应该是什么。你能给我一个建议吗?

这是我认为我需要解决方法的地方

class Shape  {  // deals with color and style, and holds sequence of lines
protected:
    Shape{initializer_list<Point> lst};  // add() the Points to this Shape

和点是

#ifndef POINT_GUARD
#define POINT_GUARD

typedef void (*Callback)(void*,void*);

namespace Graph_lib {

struct Point {
    int x,y;
    Point(int xx, int yy) : x(xx), y(yy) { }
    Point() :x(0), y(0) { }

    Point& operator+=(Point d) { x+=d.x; y+=d.y; return *this; }
};

inline bool operator==(Point a, Point b) { return a.x==b.x && a.y==b.y; }

inline bool operator!=(Point a, Point b) { return !(a==b); }


}
#endif

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

构造函数用括号括起来而不是大括号。

Shape{initializer_list<Point> lst}; 

变为

Shape(initializer_list<Point> lst);

然后你可以使用花括号来制作一个像这样的对象:

Shape shape{point1, point2, point3 };