【发布时间】:2010-05-20 16:19:14
【问题描述】:
我有一个简单的类,另一个类具有指向第一个类的属性:
#include <iostream>
#include <vector>
using namespace std;
class first{
public:
int var1;
};
class second{
public:
first* classvar;
};
然后,我有一个 void 应该将“classvar”指向“first”类的预期迭代。
void fill(vector<second>& sec, vector<first>& fir){
sec[0].classvar = &fir[0];
}
最后是 main()。创建并填充“first”类的向量,创建“second”向量,然后运行填充函数。
int main(){
vector<first> a(1);
a[0].var1 = 1000;
vector<second> b(1);
fill(b, a);
cout << b[0].classvar.var1 << '\n';
system("PAUSE");
return 0;
}
这给了我以下错误:
1>c:\...\main.cpp(29) : error C2228: left of '.var1' must have class/struct/union
1> type is 'first *'
而且我不明白为什么它将“classvar”读取为整个向量而不是单个实例。我应该这样做吗
cout << b[0].classvar[0].var1 << '\n';
它读起来很完美。
谁能找出问题所在? 提前致谢
【问题讨论】:
标签: c++ class pointers reference vector