Boa tarde, pessoal, tudo bom?
Estou com um problema e espero que possam me ajudar. Tenho um vetor da classe A, usei struct neste exemplo. E uma struct filho que herda A. Depois criei um vetor de objetos A, dai gostaria de pegar um desses elementos do vetor e fazer um cast para B, sentiram o drama? Tenho um pequeno exemplo para facilitar o entendimento.
#include "stdafx.h"
#include <algorithm>
#include <iostream>
#include <functional>
#include <vector>
struct A {
virtual void foo() {
std::cout << "A::foo()" << std::endl;
}
};
struct B: public A {
virtual void foo() {
std::cout << "B::foo()" << std::endl;
}
};
int main()
{
std::vector<A*> VectorOfAPointers;
A *test = new A();
VectorOfAPointers.push_back(new B());
//VectorOfAPointers.push_back( (B) test);
std::for_each(VectorOfAPointers.begin(), VectorOfAPointers.end(), std::mem_fun(&A::foo));
return 0;
}
Achei o num site, é muito similar ao que preciso, porém ele não faz cast, apenas adiciona um elemento B ao vector A, é quase oque preciso, o erro acontece na linha comentada, gostaria de inserir um elemento B neste vetor A sem dar um new. É possivel?
Espero que possam me ajudar.
Valeu.
PS: Esqueci de arrumar a linha comentada: o correto seria VectorOfAPointers.push_back( (B*) test);, com ponteiro, dai quando executo o programa o metodo que eu chamei eh o de A nao o de B que eu utilizei o cast. Esse é o meu problema.
