Avatar billede backupmand Nybegynder
25. marts 2002 - 17:10 Der er 5 kommentarer og
1 løsning

overloading af [] subscript operator-problem

jeg har en klasse der hedder Vector
(noget jeg selv har lavet)
hvori jeg har en prototype der ser
således ud: int operator[](int).
Jeg overloader subscript operatoren og
gøre den til en member function

int Vector::operator[](int x)
{
    cout << "hej fra function" // <- bare for at se om det virker
    x+=10;
    return x;
}

i main laver jeg et tilfælde af Vector

Vector *v=new Vector();

og forsøger at lave dette stunt:

int tmp=v[2];
cout << "\n" << tmp << "\n";

men jeg kan ikke teste min operator
v[2] fordi jeg får denne fejl:

: Cannot convert Vector to int in function main()

Hvorfor sker dette?

(jeg bruger borland 5.2 compiler til c++)



Avatar billede greybeard Nybegynder
25. marts 2002 - 17:53 #1
v er en pointer. Det er ikke pointeren, du har overloaded.
Prøv i stedet:

Vector v = *(new Vector());
Avatar billede alvion Nybegynder
25. marts 2002 - 20:34 #2
int tmp = (*v)[2];
Avatar billede chries Nybegynder
25. marts 2002 - 23:28 #3
en anden variant at "anvende" pointeren:

#include "iostream.h"

class Vector
{
public:
    int operator[](int x)
    {
        cout << "hej fra function: " << x << endl; // <- bare for at se om det virker
        x+=10;
        return x;
    }
};

int main()
{
    Vector *pV = new Vector();

    Vector& refV = *pV;

    refV[10];

}
Avatar billede backupmand Nybegynder
26. marts 2002 - 00:37 #4
Det er ok Chries, det virker, men det skal bare lige laves
sådan at det kun er nødvendigt at lave én Vector så jeg kan
sige pV[10];
Avatar billede chries Nybegynder
26. marts 2002 - 09:27 #5
en vector ? du mener erklæring kun flyder en linie ?

#include "iostream.h"


class Vector
{
public:
    ~Vector()
    {
        cout << "hej fra destructor" << endl; // <- bare for at se om det virker
    }
   
    int operator[](int x)
    {
        cout << "hej fra funktion: " << x << endl; // <- bare for at se om det virker
        x+=10;
        return x;
    }
};

int main()
{
    Vector& refV = *new Vector();

    refV[10];

    delete &refV;
}


eller en komplet vector klasse, med indsæt, slet osv.. ?
Avatar billede backupmand Nybegynder
26. marts 2002 - 13:03 #6
Nej det er rigtigt, det var vist noget i den retning jeg gerne ville lave.
Ja, jeg laver en komplet vector klasse med alle funktioner, men havde
bøvl med at oprette overloaded constructor som member function, som
skal kaldes fra en pointer, der er blevet allokeret dynamisk med new. Det ser ud som om det er det du har lavet der. MIg og pointere.
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
Kategori
Kurser inden for grundlæggende programmering

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