我需要知道是否真的有一种方法可以轻松做到这一点。这只是我想做的一个例子......
void* ptr;
ptr = new Foo;
((Foo*)ptr)->member1 = some_val;
((Foo*)ptr)->member2 = some_val;
((Foo*)ptr)->member3 = some_val;
((Foo*)ptr)->member4 = some_val;
((Foo*)ptr)->member5 = some_val;
((Foo*)ptr)->member6 = some_val;
因为ptr是一个void*,反正有没有可以临时改一下ptr的类型,这样就不用每次都强制转换来使用了?
我不能只创建另一个 Foo 类型的指针,因为 ptr 在其他地方使用并且需要是 void 类型。所以我想,暂时将其设为 Foo 类型以避免我必须做的所有混乱的铸造。
** 似乎有些人感到困惑...... ptr 必须保持 void 类型,因为在程序中它是这样使用的:-
void* ptr;
switch (bar)
{
case 1:
ptr = new Foo;
((Foo*)ptr)->member1 = some_val;
((Foo*)ptr)->member2 = some_val;
((Foo*)ptr)->member3 = some_val;
((Foo*)ptr)->member4 = some_val;
((Foo*)ptr)->member5 = some_val;
((Foo*)ptr)->member6 = some_val;
case 2:
ptr = new Doo;
...
case 3:
ptr = new Scooby;
...
因此,ptr 必须保持为 void 类型。我只是想知道是否有一种临时方法可以将 ptr 转换为另一种类型,因此请避免转换...