函数返回空向量

时间:2014-04-20 06:49:25

标签: c++ xcode vector llvm

嗨,我有这个问题

我的函数用于裁剪polygon,每次剪辑一条边并返回一个向量,该向量将所有剪切的point存储为剪辑其他边缘的新polygon。 但是这个函数总是返回空向量。 奇怪的事情是临时载体:temp一旦构造就消失了,这里是从xcode捕获的:

(评论中的图片链接)

并跳到下一行会导致temp无效:

image of temp not available

temp无法再推送

我尝试在函数中创建其他向量,我发现:

  
    
      
        

只有从这个函数返回的那个将消失,其他正常工作。

      
    
  

抱歉放置链接(我没有权限以img方式进行)

请帮忙

这是代码: .h文件

class Point
{
public:
    int x;
    int y;
    Uint8 r;
    Uint8 g;
    Uint8 b;
    Point(int x, int y, Uint8 r, Uint8 g, Uint8 b) : x(x), y(y), r(r), g(g), b(b) {}


    Point(){}


};

功能:

std::vector<Point> Core::clipedge(vector<Point> polygon, int x0, int y0, int x1, int y1)
{
    //color random for this stage
    int r=rand()%255;
    int g=rand()%255;
    int b=rand()%255;
    // For each side of the polygon, check the 4 cases of sutherland-hodgman.
    // Creating a temporary buffer to hold your new set of vertices for the clipped polygon.
    std::vector<Point> temp;
    temp.push_back(Point(1,2,255,255,255));

    //the actual clipping method 
      {.....}

    return temp;

代码调用clippedge函数

// The points p0(x0,y0) and p1(x1,y1) are ordered in clipedge such that any points
    // to the right of the line p0-p1 are inside and vice versa
    polygon=clipedge(polygon, 0, 0, width-1, 0);                  // Top edge
    polygon=clipedge(polygon, 0, height-1, 0, 0);                 // Left edge
    polygon=clipedge(polygon, width-1, height-1, 0, height-1);    // Bottom edge
    polygon=clipedge(polygon, width-1, 0, width-1, height-1);     // Right edge

这是系统信息: 系统OSX10.9.2和ide是xcode5.1.1编译器是apple llvm5.1

更新新的奇怪问题

我试过的是创建一个指针尝试更改此函数以返回指针,当我调试这个时,我发现当指针指向向量时,它显示向量实际上有剪切点后推通过剪辑功能。但仍然没有返回任何东西 这是捕获:

image show pointer works

现在问题是temp能够push_back但在调试时无法跟踪它。

仍然无法返回temp

0 个答案:

没有答案