object aanmaken in aparte functie

Status
Niet open voor verdere reacties.

Johantrax

Terugkerende gebruiker
Lid geworden
18 okt 2006
Berichten
1.268
Ik wil een object aanmaken in een aparte functie, om zo de code leesbaarder te kunnen houden. Nu weet ik dat je zeer voorzichtig moet zijn met de toestand van de heap enzo. En ik heb dus al wat testen uitgevoerd, maar ik kom er nog niet helemaal uit.

Deze code heeft als resultaat "gelukt", het resultaat dat ik dus ook wil krijgen.
Code:
#include <iostream>
using namespace std;

void init(int* i)
{
    i = new int(4);
}

int main()
{
    int mijnobject;
    init(&mijnobject);
    if (&mijnobject == NULL)
        cout << "mislukt";
    else
        cout << "gelukt";
    cin.get();
    return 0;
}

Nu is het echter van essentieel belang dat ik in de mainfunctie een pointer kan gebruiken. Ik zou dus mijnobject als int* willen declareren.
Ik weet dat het best mogelijk is om bovenstaande code te gebruiken en na de init een pointer naar mijnobject aan te maken maar dat is niet mijn bedoeling.

Je zou op het eerste zicht verwachten dat onderstaande code wel zou werken, maar dit is wegens scope en heap dus NIET het geval
Code:
#include <iostream>
using namespace std;

void init(int* i)
{
    i = new int(4);
}

int main()
{
    int* mijnobject = NULL;
    init(mijnobject);
    if (mijnobject == NULL)
        cout << "mislukt";
    else
        cout << "gelukt";
    cin.get();
    return 0;
}

Hopelijk heeft iemand hier de geniale inval, over het detail dat ik aan het missen ben :)

--Johan
 
PHP:
#include <iostream>
using namespace std;

void init(int** i)
{
    *i = new int(4);
}

int main()
{
    int* mijnobject = NULL;
    init(&mijnobject);
    if (mijnobject == NULL)
        cout << "mislukt";
    else
        cout << "gelukt";
    cin.get();
    return 0;
}
 
yep.. mss moet ik nu es gaan slapen, hoef ik zo geen imo domme vraag meer te stellen :rolleyes:

Tot een volgende,
--Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan