2014-03-30 20 views
0

我有两个类,Class Aclass B。我的代码写在下面。我收到了一个我在最后提到的错误。获取错误,同时在C++中确定元素的地址

class A 
{  
    Private: 
     B Labels 
     .... 
     ....  
}; 

A::method() 
{ 
    Labels.add (label_mark); 
    .... 
    .... 
} 

A::save() 
{ 
.... 
.... 
    for (int i = 0; i < Labels.size(); i++) 
    { 
     const B& Labels = Labels[i]; //GETTING ERROR HERE 

     fprintf (file,"%d\n", 
       i + 1, 
       Labels.timestamp.toString ("%H:%M:%S").c_str(), 

    } 
} 

我正在一个错误

error: no match for ‘operator[]’ in ‘Labels[i]’

+0

hazmatLabels作为正常的变量(不是指针类型),因此你收到此编译错误定义。 –

+0

LandmarkLists将什么定义为? –

+0

我为另一个文件使用了类似的代码...并且它工作正常 – user2756695

回答

2

你是隐藏你的B这里的名字:

const B& Labels = Labels[i]; 

当你做到这一点,Labels在RHS是一个const B&,这没有operator[]

你需要选择一个不同的名称:

const B& foobar = Labels[i];