我需要知道是否实际上有一种方法可以轻松完成此操作。这只是我想要做一个例子...永久更改指针类型
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投射到另一种类型,所以请避免投射...
是的,我想唯一的办法就是创建一个临时指针。不想这样做,但仍然... – 2013-02-27 19:10:11
不要害怕:编译器应该足够聪明,以避免让你的内存消耗。 'pt'是登记变量的完美候选人。 – PypeBros 2013-02-28 09:43:22
为什么'void * t = ptr; //原始ptr'?从那里再次使用'ptr' ... – glglgl 2013-02-28 10:07:20