F
foothompson
I have a few questions regarding casting in C++.
let's take as an example:
class A
{
virtual foo();
};
class B
{
virtual bar();
};
class C: public A, public B
{
};
Is it ok to convert a Derived Class instance to a void * and back to
a base class?
For e.g. is it ok to perform the following sequence of steps?
C* c = new C();
void* p = static_cast<void *>(c);
B* b = static_cast<B*>(p);
If not, what is the proper sequence of steps needed to convert a
derived instance to a void * and then back to a base class?
Also, is it ok to compare pointers of a derived class and a base class
for equality? i.e is the following function guaranteed to work?
bool IsEqual(B* b, C* c)
{
return (b == c);
}
Thanks
let's take as an example:
class A
{
virtual foo();
};
class B
{
virtual bar();
};
class C: public A, public B
{
};
Is it ok to convert a Derived Class instance to a void * and back to
a base class?
For e.g. is it ok to perform the following sequence of steps?
C* c = new C();
void* p = static_cast<void *>(c);
B* b = static_cast<B*>(p);
If not, what is the proper sequence of steps needed to convert a
derived instance to a void * and then back to a base class?
Also, is it ok to compare pointers of a derived class and a base class
for equality? i.e is the following function guaranteed to work?
bool IsEqual(B* b, C* c)
{
return (b == c);
}
Thanks