Hi all,
I have implemented a C++ function that uses a C library. I have no problem if i call it from main but when i call it whitin a QWidget the program crashes.
Any help?
Thanks
Printable View
Hi all,
I have implemented a C++ function that uses a C library. I have no problem if i call it from main but when i call it whitin a QWidget the program crashes.
Any help?
Thanks
check line 45 in your source.
no, seriously provide more information and code.
ok
the function i have to call il
Code:
void run() { MesDomain *domain; domain=new MesDomain(); std::vector<MesPoint> p; std::vector<MesEndPoints> s; std::vector<MesPoint> v; ... domain->setPolygon(p,s,h); domain->computeQuadrangulation(); ... delete domain }
here is class MesDomain
Code:
class MesDomain { private: MesPolygon *polygon; MesNodes *nodes; MesEdges *edges; MesElements *elements; CQMesh *mesh; public: MesDomain(); ~MesDomain(); void setPolygon(std::vector<MesPoint>, std::vector<MesEndPoints>, std::vector<MesPoint> ); void computeQuadrangulation(); void saveQuadrangulation(std::string); private: void computeTriangulation(triangulateio *); };
and its methods:
Code:
void MesDomain::setPolygon(std::vector<MesPoint> v, std::vector<MesEndPoints> s, std::vector<MesPoint> h) { for (std::vector<MesPoint>::iterator it=v.begin(); it!=v.end(); ++it) polygon->addVertex(*it); for (std::vector<MesEndPoints>::iterator it=s.begin(); it!=s.end(); ++it) polygon->addSegment(*it); for (std::vector<MesPoint>::iterator it=h.begin(); it!=h.end(); ++it) polygon->addHole(*it); }
Code:
void MesDomain::computeQuadrangulation() { triangulateio *triangulation; triangulation = new triangulateio; ... computeTriangulation(triangulation); ... }
Code:
void MesDomain::computeTriangulation(triangulateio *out) { triangulateio in; ... char * opt = ...; triangulate(opt, &in, out, 0); }
and triangulateio and triangulate are defined in the C library
put a break point and check all variables. maybe some of pointers are equal to "0".
Code:
void MesDomain::computeTriangulation(triangulateio *out) { triangulateio in; ... char * opt = ...;//<--- put a break point here
thank you all
I cant get what was the problem but now i can run it
probably some empty pointer
Thanks