这是我的代码
class test {
TButton *asd;
public :
test(){
asd->Text = "Test";
}
};
问题是它不起作用。因为该对象尚未使用new运算符构造。但是,当我尝试使用new运算符时,它返回一个错误,甚至没有编译。感谢Anyhelp。
我正在使用C ++ Builder。
答案 0 :(得分:1)
你需要这样做:
test() : asd(new TButton(...)) {
asd->Text = "Test";
}
否则你正在使用未初始化的指针。请注意我在那里使用的语法称为“初始化列表”,很多时候它是编写构造函数的最佳方法。
当然,您需要添加一个匹配的析构函数:
~test() {
delete asd;
}
但是“三个规则”(或五个)会告诉你添加更多的方法,所以只需避免使用原始指针,并使用“智能指针”:
class test {
std::unique_ptr<TButton> asd;
public :
test() : asd(new TButton(...)) {
asd->Text = "Test";
}
};
现在您不需要用户定义的析构函数。