2013-02-18 53 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