Я пытаюсь передать пару указателей в массив, прочитать файл, содержащий массивы точек, динамически распределить массивы для хранения этих точек и получить доступ к этим массивам вне функции с помощью указателей. Я использую компилятор Visual C ++ 2008 Express.
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <fstream>
#include <stdio.h>
using namespace std;
// point object
class GLintPoint{
public:
GLint x,y;
GLintPoint(){x=0;y=0;}
GLintPoint(GLint X,GLint Y){x=X;y=Y;}
};
// pass name of the file followed by points to return
void readPolyLineFile(char * filename, GLintPoint ** polylines, GLint *polyCount)
{
fstream inStream;
inStream.open(filename, ios::in);
if(inStream.fail()) return;
// number of arrays, size of each array,, values of each point
GLint numpolys, numLines, x, y;
inStream >> numpolys;
polylines = new GLintPoint*[numpolys];
polyCount = new GLint[numpolys];
for(int j=0;j < numpolys; j++)
{
inStream >> numLines;
polyCount[j] = numLines;
polylines[j] = new GLintPoint[numLines];
for(int i=0;i<numLines;i++)
{
inStream >> x >> y;
polylines[j][i].x = x;
polylines[j][i].y = y;
}
}
inStream.close();
return;
}
polylines - массив для хранения точечных массивов, который представляет собой данные, которые я хочу. polyCount - размер каждого отдельного массива в полилиниях.
До сих пор, когда я запускаю эту функцию, она запускается, как и ожидалось, но когда она возвращается к строке, из которой я ее вызвал, pointersE был установлен в null, а массивы предположительно удаляются. Почему моя функция удаляет эти массивы и как я могу изменить это поведение, чтобы поддерживать динамический массив при возврате? Любая помощь будет принята с благодарностью.