У меня проблема с разрезанием данных, но я не знаю, как это исправить. Здесь у меня только один подкласс (B), но на самом деле у меня есть другие подклассы (в которых нет j
).Участник подкласса не найден
Это мой код:
helloworld.h
#ifndef HELLOWORLD_H_
#define HELLOWORLD_H_
class A {
public:
A(): i(5) {}
int i;
};
class B: public A {
public:
B(): A(), j(2) {}
int j;
};
#endif /* HELLOWORLD_H_ */
helloworld.cpp
#include <iostream>
#include <vector>
#include "helloworld.h"
using namespace std;
int main() {
vector<A*> v;
v.push_back(new B());
v.push_back(new B());
vector<A*>::iterator it = v.begin();
++it;
cout << (*it)->j;
return 0;
}
Изменение '' вектор для '' вектор является очевидным способом, чтобы исправить это. Я мог бы рассказать вам что-то более полезное, но мне нужно знать, что вы на самом деле пытаетесь сделать. – interjay
Если у вас есть другие подклассы, которые не имеют 'j' в качестве члена, то что вы ожидаете от' (* it) -> j'? – interjay
Я хочу, чтобы это возвращало значение 'j' (2 здесь). У меня есть функция, которая знает, что спросить, какой подтип –