Ik ben voor mijn masterproef in c++ segmentatie algoritmes aan het ontwerpen en implementeren(graph cuts op precies te zijn). Ik ben c++ ook nog aan het leren. De basis heb ik ondertussen wel onder de knie, maar ik probeer nu mijn programmeer stijl eleganter te maken(door oa meer en meer object gericht te werken).
Ik heb 2 dynamische array's waar ik een aantal x en y coordinaten opsla.
Die stop ik dan in een array van pointers om te returnen.
De code:
[cpp]
int* Lnx;
int* Lny;
Lnx = new int[noa];
Lny = new int[noa];
Lnx = lnx;
Lny = lny;
for(int i = 0; i<=noa; i++)
{
std::cout<<"lnx:"<<i<<":"<<lnx<<std::endl;
std::cout<<"lny:"<<i<<":"<<lny<<std::endl;
}
delete[] lnx,lny;
int** defn;
defn = new int*[2];
defn[0]=Lnx;
defn[1]=Lny;
for(int i = 0; i<=noa; i++)
{
std::cout<<"defn x:"<<i<<":"<<defn[0]<<std::endl;
std::cout<<"defn y:"<<i<<":"<<defn[1]<<std::endl;
}
return defn;
[/cpp]
lnx is een array die veel meer elementen bevat als noa. Ik wil dus enkel de eerste noa elementen hebben.
Het grote probleem dat ik niet snap is, dat als ik test, dan krijg ik als output dit:
de defn x:0: zou dus een -1 moeten zijn ipv een of andere int.
Ik snap er nog minder van als ik de 2 arrays om draai, dus
defn[0] = Lny;
defn[1] = Lnx;
dan krijg ik een output waarbij:
defn y:0: een of andere rare int.
defn x:0: -1
Ergens lijkt me dat de eerste twee geheugencellen waar de pointer Lnx[0] en Lnx[1] naar verwijst veranderen. Hoe kan dat?
Heeft iemand een suggestie hoe het wel zou kunnen werken?
Ik heb 2 dynamische array's waar ik een aantal x en y coordinaten opsla.
Die stop ik dan in een array van pointers om te returnen.
De code:
[cpp]
int* Lnx;
int* Lny;
Lnx = new int[noa];
Lny = new int[noa];
Lnx = lnx;
Lny = lny;
for(int i = 0; i<=noa; i++)
{
std::cout<<"lnx:"<<i<<":"<<lnx<<std::endl;
std::cout<<"lny:"<<i<<":"<<lny<<std::endl;
}
delete[] lnx,lny;
int** defn;
defn = new int*[2];
defn[0]=Lnx;
defn[1]=Lny;
for(int i = 0; i<=noa; i++)
{
std::cout<<"defn x:"<<i<<":"<<defn[0]<<std::endl;
std::cout<<"defn y:"<<i<<":"<<defn[1]<<std::endl;
}
return defn;
[/cpp]
lnx is een array die veel meer elementen bevat als noa. Ik wil dus enkel de eerste noa elementen hebben.
Het grote probleem dat ik niet snap is, dat als ik test, dan krijg ik als output dit:
Code:
2010-04-12 10:57:54 Cout: Lnx:0:-1
2010-04-12 10:57:54 Cout: Lny:0:-1
2010-04-12 10:57:54 Cout: Lnx:1:0
2010-04-12 10:57:54 Cout: Lny:1:-1
2010-04-12 10:57:54 Cout: Lnx:2:-1
2010-04-12 10:57:54 Cout: Lny:2:0
2010-04-12 10:57:54 Cout: Lnx:3:0
2010-04-12 10:57:54 Cout: Lny:3:0
2010-04-12 10:57:54 Cout: defn x:0:126669440
2010-04-12 10:57:54 Cout: defn y:0:-1
2010-04-12 10:57:54 Cout: defn x:1:126681144
2010-04-12 10:57:54 Cout: defn y:1:-1
2010-04-12 10:57:54 Cout: defn x:2:-1
2010-04-12 10:57:54 Cout: defn y:2:0
2010-04-12 10:57:54 Cout: defn x:3:0
2010-04-12 10:57:54 Cout: defn y:3:0
Ik snap er nog minder van als ik de 2 arrays om draai, dus
defn[0] = Lny;
defn[1] = Lnx;
dan krijg ik een output waarbij:
defn y:0: een of andere rare int.
defn x:0: -1
Ergens lijkt me dat de eerste twee geheugencellen waar de pointer Lnx[0] en Lnx[1] naar verwijst veranderen. Hoe kan dat?
Heeft iemand een suggestie hoe het wel zou kunnen werken?
Laatst bewerkt door een moderator: