2013-02-18 85 views
1

我試着墊的結構我的應用程序顯示爲「運行失敗」。任何其他方式來做到這一點?opencv中mat的結構?

下面是我試過的代碼和它得到失敗。如何使這種鍛鍊或其他方式在那裏?

「COMMON.H」

struct initialize { 
     cv :: Mat G_Sm; 
}; 

「Initialize.cpp」

struct initialize* initfunction () { 
    struct initialize* initializemat = (initialize*) malloc(sizeof(*initializemat)); 
    initializemat -> G_Sm = Mat:: zeros (3,1, CV_8U); 
    return (initializemat); 
} 

「的main.cpp」

int main() { 
    struct initialize* initializem = initfunction(); 
    cout << initializem -> G_Sm << endl; 

return 0; 
} 

而不是馬如果我使用「int」,程序不會崩潰。如果它是結構中的「Mat」變量,程序就會崩潰。

+0

'Mat'是指針類型嗎? – 2013-02-18 12:06:54

+0

你正在'cv :: Mat'上使用'cout'。 – sgarizvi 2013-02-18 12:07:54

+0

@ sgar91即使我評論出其結果相同。 – 2vision2 2013-02-18 12:10:04

回答

6

使用C++而不是C:

initialize* initfunction () { 
    initialize* initializemat = new initialize; 
    return initializemat; 
} 

你不應該malloc分配的C++對象。
malloc不調用任何構造函數爲你留下G_Sm未初始化。

+0

或者只是在堆棧上構建它。 – juanchopanza 2013-02-18 12:16:21

+0

@juanchopanza當然,但我想保持界面完好無損。 – molbdnilo 2013-02-18 12:52:49

+0

感謝您的回答。這解決了我的問題.. – 2vision2 2013-02-18 12:57:41