-2

以下是我的问题

struct point{
     int x;
     int y;
};   

struct OuterStruct 
{
    std ::vector <point *> pa;
    std ::vector <point *> pb;
};

OuterStruct atest; // global variable

现在我主要是这样做的

point n ;
n.x=1;
n.y =2;
atest.pa.push_back(n);
atest.pb.push_back(n);

..

在其他一些功能中,如果我使用这个全局结构,pa,pb 的值会丢失,并且它们有一些垃圾值。我在这里做错什么了吗。

4

1 回答 1

0

改变指针向量:

struct OuterStruct 
{
    std::vector<point*> pa;
    std::vector<point*> pb;
};

进入对象向量:

struct OuterStruct 
{
    std::vector<point> pa;
    std::vector<point> pb;
};
并且
  • 使用有意义的名称(, papb不要说太多...)atestOuterStruct
  • 在命名约定上保持一致(如果你用UpperCamelCase, 然后point->命名类型Point
  • 尽可能避免使用全局变量
  • 创建一个自定义构造函数point以简化其创建:

    struct point {
        point(int x_, int y_) : x(x_), y(y_) { }
        int x;
        int y;
    };   
    

    那么你可以简单地做:

    atest.pa.push_back(point(1,2));
    
于 2013-03-30T23:12:51.547 回答