Indirectly inherited class push_back's to std::vector
Here is the pseudocode:
Code:
class Object
{
};
class Goods : public Object
{
};
class Pallet : public Goods
{
Pallet(const Pallet& _p) { this->mesh = _p.mesh; }
};
class myDX9Widget {
std::vector<Object*> m_vRenderObjects;
};
SkinnedMesh *palletMesh = new SkinnedMesh();
Pallet *pallet = new Pallet(palletMesh);
m_vRenderObjects.push_back(pallet); // Error here
And BTW, if I need to use the copy constructor
Code:
class Lorry : public Object
{
myDX9Widget *mOwner;
Pallet *GeneratePallet()
{
Pallet *pallet = new Pallet(); // should have used a copy constructor here,
//but i don't have a reference of Pallet,
// anywhere I should store it if you were programming a warehouse simulator....
return pallet;
}
}
This is triggered when a TruckArrive Event happens...
Code:
class TruckArrive
{
void OnUpdate(float dt)
{
if (m_blorryHasParked)
{
Lorry *lorry = dynamic_cast<Lorry*>(Actor);
Pallet *pallet = lorry->GeneratePallet();
lorry->mOwner->m_vRenderObjects.push_back(pallet);
}
}
}
Any comments are welcome!
Jack
Re: Indirectly inherited class push_back's to std::vector
1. Is it possible to create a small program that demonstrates the error ?
For example, the following compiles:
Code:
#include <vector>
class Object {};
class Goods : public Object {};
class Pallet : public Goods {};
class myDX9Widget
{
std::vector<Object*> m_vRenderObjects;
void foo()
{
Pallet *pallet = new Pallet();
m_vRenderObjects.push_back(pallet);
}
};
Re: Indirectly inherited class push_back's to std::vector
Code:
SkinnedMesh *palletMesh = new SkinnedMesh();
Pallet *pallet = new Pallet(palletMesh);
m_vRenderObjects.push_back(pallet); // Error here
To what function do these statements belong? - as posted they don't belong to any function which could be why you are getting an error.
Quote:
Here is the pseudocode:
It would be much better if you posted the actual code rather than pseudocode so that we don't have to guess what your code is actually trying to do!