gpt4 book ai didi

c++ - 不使用指针的三星bada开发

转载 作者:太空狗 更新时间:2023-10-29 20:30:17 24 4
gpt4 key购买 nike

可以使用下面列出的方法(据我所知)创建 C++ 中的对象:

Person p;

Person p("foobar");

Person * p = new Person();

那么,为什么三星Bada IDE不允许我做前两种方法呢?为什么我总是必须使用指针?我可以使用指针等等,只是我想知道这种风格背后的根本原因。

来自 Bada API 引用的示例代码。

// Create a Label
Label *pLabel = new Label();
pLabel->Construct(Rectangle(50, 200, 150, 40), L"Text");
pLabel->SetBackgroundColor(Color::COLOR_BLUE);
AddControl(*pLabel);

我修改并尝试使用下面的代码。虽然它可以编译并且应用程序可以运行,但标签不会显示在表单上。

// Create a Label
Label pLabel();
pLabel.Construct(Rectangle(50, 200, 150, 40), L"Text");
pLabel.SetBackgroundColor(Color::COLOR_BLUE);
AddControl(pLabel);

注意:使用的 Rectangle 类在没有指针的情况下动态创建对象。那它和 Label 有什么不同呢?令人困惑:-/

最佳答案

在这段代码中:

// Create a Label
Label pLabel;
pLabel.Construct(Rectangle(50, 200, 150, 40), L"Text");
pLabel.SetBackgroundColor(Color::COLOR_BLUE);
AddControl(pLabel);

标签对象在超出范围时被销毁,因此无法显示在表单上。不幸的是,AddControl 方法需要一个引用,因为这意味着上面的方法应该有效。使用:

Label *pLabel = new Label();

之所以有效,是因为当 pLabel 变量超出范围时,默认情况下不会调用析构函数。

关于c++ - 不使用指针的三星bada开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7481968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com