0
Я хочу, чтобы объект hlaObj для HlaObject из RtiValueAggregate, но он не работает ...! Наследования между двумя классами нет. и HlaObject фактически получен из RtiValue. может кто-нибудь сказать мне что-то не так в следующем коде: Спасибо!Тип объекта литья для объекта дочернего класса
class RtiValue;
class HlaObject;
class RtiValueAggregate
{
public:
friend class RtiValue;
int w;
RtiValueAggregate() : w(10)
{
}
};
class RtiValue
{
public:
friend class RtiValueAggregate;
RtiValue()
{
int x = 5;
pAggregate_ = new RtiValueAggregate();
}
RtiValueAggregate* getAggregate() const
{
return pAggregate_;
}
private:
RtiValueAggregate* pAggregate_;
};
class ObjectAttribute : public RtiValue
{
public:
int v;
ObjectAttribute() : v(0)
{
RtiValue();
}
};
class HlaObject :public virtual RtiValueAggregate
{
public:
int a;
ObjectAttribute* ptrV;
HlaObject() : a(1)
{
ptrV = new ObjectAttribute();
}
};
int _tmain(int argc, _TCHAR* argv[])
{
RtiValue *rtiVal = new RtiValue();
RtiValueAggregate* rtiValueAggr = rtiVal->getAggregate();
HlaObject *hlaObj = reinterpret_cast<HlaObject*>(rtiValueAggr);
cout << "Press any key to exit..." << endl;
cin.get();
return 0;
}
'это не working'. Посмотрите на сообщения об ошибках, они должны сказать вам, что не так. –
Какой строитель вы используете? Я построил его с помощью 'g ++', и никакая ошибка не сбрасывается. С другой стороны, вы используете множественное наследование в другой части кода? В противном случае я не вижу необходимости использовать виртуальное наследование. – jcm