【发布时间】:2013-10-27 03:31:12
【问题描述】:
我想将指向派生类成员的指针转换为 void* 并从那里转换为基类的指针,如下例所示:
#include <iostream>
class Base
{
public:
void function1(){std::cout<<"1"<<std::endl;}
virtual void function2()=0;
};
class Derived : public Base
{
public:
virtual void function2(){std::cout<<"2"<<std::endl;}
};
int main()
{
Derived d;
void ptr* = static_cast<void*>(&d);
Base* baseptr=static_cast<Base*>(ptr);
baseptr->function1();
baseptr->function2();
}
这会编译并给出所需的结果(分别打印 1 和 2),但它可以保证工作吗? static_cast的描述我在这里找到:http://en.cppreference.com/w/cpp/language/static_cast
只提到转换为void* 并返回到指向 same 类的指针(第 10 点)。
【问题讨论】:
标签: c++ static-cast