Ik heb de volgende functie geschreven:
Die ik als volgt gebruik:
Het probleem is nu de volgende output krijg:
Het lijkt op een geheugenallocatie probleem, maar ik snap niet precies hoe ik het nog anders kan doen. Ja, ik zou malloc kunnen proberen, maar het moet met new toch ook kunnen?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| map<const char*, int> *SearchText::countWords() { map<const char*, int> *table = new map<const char*, int>; (*table)["aap"] = 1; (*table)["noot"] = 2; cout << (*table)["aap"] << endl; cout << (*table)["noot"] << endl; return table; } |
Die ik als volgt gebruik:
C++:
1
2
3
4
5
6
7
8
9
| try { SearchText *text = new SearchText("test.txt"); map<const char*, int> *table = text->countWords(); cout << (*table)["aap"] << endl; cout << (*table)["noot"] << endl; } catch(int ex) { cout << "Could not open file." << endl; } |
Het probleem is nu de volgende output krijg:
Oftewel: In de eerste twee output statements (in de functie zelf) geeft table netjes z'n waarde af, terwijl table dat bij de laatste twee dat niet doet.1
2
0
0
Het lijkt op een geheugenallocatie probleem, maar ik snap niet precies hoe ik het nog anders kan doen. Ja, ik zou malloc kunnen proberen, maar het moet met new toch ook kunnen?
[ Voor 0% gewijzigd door Boondock_Saint op 11-09-2007 17:51 . Reden: Code iets leesbaarder gemaakt ]
Blasphemy is a victimless crime