我需要知道是否實際上有一種方法可以輕鬆完成此操作。這只是我想要做一個例子...永久更改指針類型
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