mardi 2 août 2016

Transform std:vector

I am trying to convert vector of references to Base objects to vector of references to Derived objects. Everything is compiling fine, but i got this error: Runtime error time: 0 memory: 3412 signal:6

This is my code:

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>

using namespace std;

struct B {
    B(int i) { b = i; }
    virtual ~B() {}
    int b;
};

struct D: public B {
    D(int i): B(i) {}
};

typedef vector<reference_wrapper<B>> refB;
typedef vector<reference_wrapper<D>> refD;

void dynamicCast(refB &b, refD &d)
{
    for(const auto& bb: b)
    {
        d.push_back(dynamic_cast<D&> (bb.get()));
    }
}

int main() {
    vector<B*> numbers;
    refB refNumbers;
    refD dNumbers;

    for(int i = 0; i < 10; i++)
    {
        numbers.push_back(new B(2*i));
        refNumbers.push_back(*numbers[i]);
    }

    dynamicCast(refNumbers, dNumbers);

    return 0;
}

What is wrong with dynamicCast() function?

Aucun commentaire:

Enregistrer un commentaire