Моя основная структура программы такова:
class B1
{
vector <someStruct> aStruct; //some struct contains a vector of 'someotherStruct's, etc
B1() { cout << &aStruct << " ";};
};
class B2 {B1* pB1;};
class A
{
B1 object_B1;
B2 object_B2;
A() { objectB2.pB1 = &object_B1;};
};
int main()
{
vector <A> someA;
for(int q=0; q < N; q++)
someA.push_back(A());
cout << endl;
for (int q=0; q < N; q++)
cout << someA[q].B2.pB1 << " ";
}
Так что, если бы N было 5, результат будет:
0xbffff828 0xbffff828 0xbffff828 0xbffff828 0xbffff828 \ n
0xbffff828 0xbffff828 0xbffff828 0xbffff828 0xbffff828
Другими словами, вектор каждого объекта занимает одно и то же место в памяти. И вывод программы также подтверждает это, поскольку доступ к данным в векторе через разные объекты дает одинаковые значения, даже если они должны быть разными. Другая странная вещь, конечно, в том, что она дает мне тот же адрес для вектора, что и для объекта.