我已經寫在C++中有對象指針數組被傳遞給函數的參數作爲簡單的代碼波紋管代碼:如何將動態分配的指針數組(轉換爲對象)轉換爲指向對象的單個指針?
void foo1(myClass **obj1)
{
//some stuff here
foo2(obj[0]);
}
void foo2(myClass *obj)
{
//some other stuff here
cout<<"I'm here"<<endl;
}
main()
{
myClass **object
object= new *myClass[n];
for(int i=0;i<n;i++)
object[i]=new myClass()
foo1(object);
cout<<"done"<<endl;
}
此代碼的工作,直到打印「我在這裏」並突然崩潰。我認爲指針數組的數組應該有問題,並且我將myclass **轉換爲myclass *。但我完全無法弄清楚問題所在。
編輯:我標記了foo2中的代碼和poof!它工作得很好。我奇怪的是它向我展示了執行行可以傳遞代碼並執行一些行(例如cout < <「我在這裏」),儘管之前已經達到了非法的內存訪問錯誤。我對麼?
發佈完整的可編譯示例。 – 2014-09-04 22:03:32
myClass的外觀如何? – 2014-09-04 22:07:46
除非你有很好的理由,否則你不應該在C++中使用指針。 – 2014-09-04 22:15:09