Wywolanie typu funkcja()[]

0
vector <int> m_ObjectVector;
vector<int>* GetObjectVector()
{
    return &m_ObjectVector;
}

 row = GetObjectVector()->at(1);                           //ok
 row = (GetObjectVector())->operator[](1);                 //ok
 row = GetObjectVector()[1];                              //**error**

Witam,
podsylam powyzszy kod do analizy. Czy nie da sie użyć operatora [] gdy odwolujemy sie do niego poprzez funkcje?

Pozdrawiam,
h.

0

Niech funkcja zwraca referencję do vectora.

1
#include <vector>
using namespace std;
 
vector<int> vec = {1, 2, 3};
 
vector<int>* getVec() {
    return &vec;
}
 
int main() {
    getVec()->at(1);
    getVec()->operator[](1);
    (*getVec())[1];
    return 0;
}

http://ideone.com/dn6HxV

0

Oba rozwiazania dzialaja i wiele tlumacza.
Ech, poprogramowal czlowiek troche w c# i juz nic nie pamietam a nie znosze jak nie wiem czemu cos nie dziala;-)
Dzieki.

1
huta napisał(a):

a nie znosze jak nie wiem czemu cos nie dziala;-)
zwróciłeś wskaźnik, więc trzeba go dereferować zanim się dobierzesz do obiektu...

1 użytkowników online, w tym zalogowanych: 0, gości: 1