gpt4 book ai didi

c++ - Objective C "@property (nonatomic, retain)"的 C++ 等价物是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:23 27 4
gpt4 key购买 nike

我想知道如何在 C++ 中正确创建属性。在 Objective C 中,我使用“@property”(通常与 (nonatomic, retain) 属性一起使用)。

C++ 中正确的方法是什么?

谢谢!!

最佳答案

正如 Seva 所说,C++ 中没有那种意义上的属性。你可以做什么:用 boost::share_ptr 写一个类成员变量,并可选择为该成员编写 getter 和 setter。但这甚至不是真正必要的,尽管可能被认为是良好的行为。

typedef boost::shared_ptr<std::string> StringPtrT;

class A {
public:
void setStringProperty(StringPtrT s) { this->string_property = s; }
StringPtrT getStringProperty() const { return this->string_property; }

protected:
StringPtrT string_property;
}

共享指针将处理共享和引用计数,基本上模拟某种“保留”行为。在更新引用计数时,IIRC boost shared_ptr 类型始终是原子的。但是,对对象本身的访问(取消引用指针)将是非原子的。如果需要,您必须自己处理。

关于c++ - Objective C "@property (nonatomic, retain)"的 C++ 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8791092/

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