Avatar billede zerohero Nybegynder
30. marts 2005 - 03:04 Der er 4 kommentarer

Pointer til sig selv

Hvordan laver man en funktion i en klasse der returnere en pointer der peger på klassen selv?

eks.

class Test
{
  public:
    Test* GetPointerToMySelf()
    {
        return /* HVAD SKAL JEG SKRIVE HER???? */;
    }
}
Avatar billede gammelhat Nybegynder
30. marts 2005 - 07:02 #1
return this;
Avatar billede arne_v Ekspert
30. marts 2005 - 08:10 #2
Men hvad skal du bruge den til ?

Test *a = new Test();
Test *b = a->GetPointerToMySelf();

kan jo skrives som:

Test *a = new Test();
Test *b = a;
Avatar billede zerohero Nybegynder
30. marts 2005 - 17:07 #3
Jeg fandt ud af det på en lidt anden måde!

GammelHat>> kender du en side med lidt information omkring 'this'????

Smid nogle svar!
Avatar billede arne_v Ekspert
30. marts 2005 - 17:10 #4
eksempel på nogle måder at bruge this på:

#include <iostream>

using namespace std;

class A;

class B
{
    private:
        A *a;
    public:
        B(A *a);
        void foobar();
};

class A
{
    private:
        B *b;
    public:
        int v;
        A(int v = 0);
        void foobar();
};

B::B(A *a)
{
    this->a = a; // argument shadows for instance member
}

void B::foobar()
{
    cout << a->v << endl;
}

A::A(int v)
{
    this->v = v; // argument shadows for instance member
    b = new B(this); // pass itself as argument
}

void A::foobar()
{
    b->foobar();
}

int main()
{
    A *a1 = new A(123);
    a1->foobar();
    A *a2 = new A();
    a2->foobar();
    return 0;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester