Ik heb een beetje een gelijkaardig probleem zoals op [rml][ C++] returnen van class[/rml]
En ik weet niet goed hoe het op te lossen, ik heb me al rot gezocht.
Ik heb dus een class Sparse van de vorm:
En ik heb hiervoor een constructor, destructor en copy-constructor voorzien:
Ook heb ik een operator + voorzien waarmee ik twee grafen kan optellen:
zoals men kan zien returned deze een "Sparse"
Bij de return (return resGraaf) wordt eerst de kopieconstructor en dan de destructor opgeroepen met als gevolg ik blijkbaar alles kwijt ben (mijn gelinkte lijst) zodat deze in het hoofdprogramma foetsjie is
Nu versta ik dat niet, want ik heb nogtans een copy-constructor geschreven dus dat zou dan toch niet mogen. Mijn vermoeden is dat er dus een fout in mijn copy-constructor zit:
En ik weet niet goed hoe het op te lossen, ik heb me al rot gezocht.
Ik heb dus een class Sparse van de vorm:
code:
1
2
3
4
5
6
7
8
9
| int aKnopen;
int aBogen;
struct node {
int knoop;
node *next;
struct node(int w) {knoop=w;next=NULL;}
};
typedef node *link;
std::vector<link> buren; |
En ik heb hiervoor een constructor, destructor en copy-constructor voorzien:
code:
1
2
3
| ~Sparse();
Sparse(int aantal);
Sparse(const Sparse &s); |
Ook heb ik een operator + voorzien waarmee ik twee grafen kan optellen:
code:
1
| const Sparse operator+(Sparse &y) const; |
zoals men kan zien returned deze een "Sparse"
Bij de return (return resGraaf) wordt eerst de kopieconstructor en dan de destructor opgeroepen met als gevolg ik blijkbaar alles kwijt ben (mijn gelinkte lijst) zodat deze in het hoofdprogramma foetsjie is
Nu versta ik dat niet, want ik heb nogtans een copy-constructor geschreven dus dat zou dan toch niet mogen. Mijn vermoeden is dat er dus een fout in mijn copy-constructor zit:
code:
1
2
3
4
5
| Sparse::Sparse(const Sparse &s) {
aKnopen=s.aKnopen;
aBogen=s.aBogen;
buren=s.buren;
} |