2015-03-03 49 views
0

在以下代碼:使用指針來遍歷一個類的動態分配

#include <iostream> 

using namespace std; 
class A 
{ 
public: 
    int a, b, c; 
    A() 
    { 
     a=b=c=0; 
    } 
}; 
int main() 
{ 
    A* a=new A(); 
    A* b=a; 

    for(int i = 0; i < 10; i++) 
    { 
     a = new A(); 
     cout<<a->a<<endl; 
     cout<<a->b<<endl; 
     cout<<a->c<<endl; 
    } 
    for(int i = 0; i < 10; i++) 
    { 
     cout<< b->a <<endl; 
     cout<< b->b <<endl; 
     cout<< b->c <<endl; 
     b++; 
    } 

} 

我正在使用指針準陣列。但是,當我嘗試使用b讀取這個數組時,我得到了垃圾值。問題是b ++不是通過一個等於A類對象大小的值來遞增b。我怎樣才能讀取使用b的類的「數組」類?

回答

2

根據您的實施,a指向A的單個實例,而不是數組。

要創建陣列,

A* a = new A[10]; 
for (int i = 0; i < 10; ++i) 
{ 
    A* b = a+i; 
    cout << b->a << endl; 
    cout << b->b << endl; 
    cout << b->c << endl; 
}