我有一個複雜的A類:有什麼方法可以避免在C++中使用非法指針?
class A{
...
};
和B類是包括A的指針,並且具有返回指針的方法。
class B{
A* GetA(){return pA;}
A* pA;
};
然後,當我用「木屐」,以獲得一個A的指針,它更容易使用非法指針,如:
void func(A* p){
B b;
p = b.GetA();
}
當我使用「功能」
,我只是得到一個非法指針。上面的代碼只是一個示例。我發現當我處於多線程環境時,很容易犯這個錯誤。
有什麼方法可以讓我確定避免這些錯誤嗎?
非常感謝
考慮shared_ptr而不是原始指針? – Jaywalker 2012-08-02 16:41:55
這是觸發未定義行爲的編碼錯誤;它與多線程無關。你的編譯器不會提醒你這種情況嗎? – dasblinkenlight 2012-08-02 16:42:42
考慮在'B'的構造函數中初始化'pA'?如果沒有有效的「pA」,沒有辦法創建'B'的實例。 – Damon 2012-08-02 16:42:53