Привет, может кто-нибудь объяснить, что не так со следующим кодом? Я сначала включаю ребенка абстрактного класса в другой класс, который будет использовать этот ребенок.Полиморфный вектор
#include "child.h"
Затем я заполняю вектор 2d ниже указателями, указывающими на экземпляры ребенка.
vector<vector<abstractitem*>*>vec;
Я использую эту функцию класса в своем классе. Функция get находится в абстрактном классе.
void fn::getall()
{
for (int i=0;i<m_nrows;i++)
{
for(int j=0;j<m_ncolumns;j++)
{
vec[i][j]->get(); //error on this line: do you intend to use . instead?
}
printf("\n");
}
}
Ваша помощь будет очень признательна.
Вы, вероятно, имел в виду писать 'вектор <вектор> vec' вместо? –
5gon12eder
'vec [i]' дает вам 'vector *'. 'vec [i] [j]' дает вам 'vector '. Если вы хотите использовать указатели повсюду, вам нужно понять, как они работают. –
juanchopanza
Спасибо, это решило мою проблему. Im новый с указателями. Не могли бы вы объяснить, почему вектор * дает вам vec [i] вместо того, что я искал? –
fbdg