2015-03-03 92 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; 
}