У меня есть простой класс и другой класс, у которого есть свойство, указывающее на первый класс:
#include <iostream>
#include <vector>
using namespace std;
class first{
public:
int var1;
};
class second{
public:
first* classvar;
};
Тогда у меня есть пустота, которая должна указывать "classvar" на предполагаемую итерацию класса "first".
void fill(vector<second>& sec, vector<first>& fir){
sec[0].classvar = &fir[0];
}
Наконец, основной (). Создайте и заполните вектор класса «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';
отлично читается.
Может кто-нибудь выяснить проблему?
Заранее спасибо