2017-08-29 85 views
0

我想在另一个函数中使用不同的WText实例,但是因为我想只有一个控制函数,所以我想在那里传递它们。将类指针传递给一个函数

带有当前设置的代码编译但由于某些内存故障而失败,我不明白。

class mode : public WApplication 
{ 
//.. 
private: 
//.. 
void someFunc(); 
void control(WText* texty); 
WText* text; 
WText* text2; 
WText* text3; 
//...etc 
}; 

void mode::someFunc(){ 
    control(text); //how to pass it? 
    //might pass text2 or text3 as well 
} 

void mode::control(WText* texty){ 
    texty->setText("blabla"); 
    //.. 
} 
+2

此代码不会失败,并出现一些内存错误!请提供[mcve] – user463035818

+1

*当*和*哪里*程序失败?它如何失败(崩溃或意外的结果)?你用调试器来帮助你发现问题吗?内存调试器如[Valgrind](http://valgrind.org/)如何? –

+0

为什么是“文本”和其他指针?只是从来没有使用原始的拥有指针作为成员 – user463035818

回答

0

文本成员是指向对象WText, 你需要做的第一件事是创建一个新的WText对象:

void mode::someFunc() { 
    text = new WText(); 
    control(text); 
} 

请记住销毁文本对象后使用。

+0

谢谢,实际上我已经调用了text = new WText();在控制(文本)后没有注意到它。 :( – Levi

+0

或者也许在构造函数中设置你需要的东西? – doctorlove