如何从目标c
转换为非托管c ++1
property ( nonatomic, assign, getter = isCanceled ) BOOL canceled;
顺便说一下 - isCanceled = false;所以为什么不怀疑
property ( nonatomic, assign) BOOL canceled;
与其他运营商的代码的另一部分一样:
2
property ( nonatomic, retain ) Im* img;
这个结构在c ++中是不变的吗?
3
property(nonatomic,readonly)参数* firstPar; 这在c ++中就像变量
const Parameter* firstPar;
以及如何正确翻译第一和第二个属性???
答案 0 :(得分:0)
对于第一个,在C ++中它可能如下所示:
class MyClass
{
bool m_cancelled;
public:
bool isCancelled()
{
return m_cancelled;
}
void setCancelled(bool b)
{
m_cancelled = b;
}
};
或者,我发现实现访问器方法的大多数C ++类通常使用getXyz
和setXyz()
命名约定,这与仅xyz
的典型Objective-C约定完全不同和setXyz:
,因此命名isCancelled()
方法getCancelled()
可能更有意义。
对于指针类型,它可能会变得棘手。没有单独的内存所有权模型,就像Cocoa一样,所以很难准确地翻译retain
属性应该做什么,但在C ++中有一些叫做smart pointers的漂亮的小东西。了解智能指针以及哪种类型的智能指针对您的其他数据/类类型有用。例如,您可能会发现boost::shared_ptr
有用。
C ++中的只读属性可能如下所示:
class MyClass
{
int m_someProp;
public:
int getSomeProp()
{
return m_someProp;
}
MyClass(int initialValue) : m_someProp(initialValue)
{
// m_someProp can still be altered anywhere within any method within
// MyClass, but users of MyClass will only have access to the value
// via getSomeProp()
}
}