jjzjj

SomeClass

全部标签

C++ 引用类型作为 Objective-C++ 中的实例变量

C++引用类型作为实例变量在Objective-C++中是被禁止的。我该如何解决这个问题? 最佳答案 您不能明智地使用引用作为实例变量,因为无法初始化实例变量并且无法重新设置引用。替代方法可能是简单地使用(可能是智能的)指针。让您更接近C++类行为的另一种可能性是为您的C++成员使用PIMPL样式的成员:structCppImpl{SomeClass&ref;CppImpl(SomeClass&ref):ref(ref){}};@interfaceA:NSObject{CppImpl*pimpl;}-(id)initWithRef:

c++ - SomeClass **ptr; 之间的区别和 SomeClass *ptr;

抱歉,这看起来像是一个菜鸟问题,但对Google来说却是一个真正的痛苦。我正在使用C++,虽然我可以通过指针和引用获得,但有时对我来说仍然很神秘。我有一些代码,类似于SomeClassName**pointer,我想知道为什么有两个星号而不是一个? 最佳答案 用图片来解释要容易得多,但我们还是试一试。如果您已经知道其中的一些内容,我们深表歉意。指针只是一个保存值的变量,就像int或char一样。使它成为指针的原因是该变量中的值是其他地方内存中的地址。示例更简单。假设我们有3个这样声明的变量:intiVar=42;//intint*p

c++ - 类中的几个 "private"声明

我正在查看一些开源代码,发现了这样一个类声明:classFoo{private://declarationsprivate://declarationsprivate://declarationspublic://declarations};除了在非常的声明列表中提醒您成员的隐私外,您是否有任何时候想要做这样的事情? 最佳答案 这对于此类场景特别有用:classSomeClass{//COnstructorsetc.public:SomeClass();SomeClass(constSomeClass&other);~SomeCla

c++ - 类名中使用的范围解析运算符是什么意思

我看到了这段代码。classSomeClass::OtherClass:publicBaseClass{//stuffinhere}SomeClass是一个类,那么OtherClass可能是一个存在于SomeClass范围内的类?我从来没有见过这样做的。那么,是这个意思吗? 最佳答案 maybeOtherClassisaclassthatexistsinsidethescopeofSomeClass?给自己打个勾。就是这个意思。这用于在SomeClass中声明之后随后定义OtherClass:classSomeClass{class

c++ - 指针的初始化

我目前对以下语句感到困惑-我虽然该语句会在编译时产生错误,但它不会。//statement1:someclass*q(someclass());如果是这样的话我明白了//statement2:someclass*q(&someclass());我想知道为什么声明1不会产生错误,或者即使它是有效的(我在幕后遗漏了什么吗?) 最佳答案 Iwouldliketoknowwhystatment1doesntgenerateanerrororevenifthatisvalid第一个语句是有效的,尽管它可能没有按照您的预期进行:此语句声明了一个

c++ - 为什么在定义析构函数时编译器不再添加默认移动构造函数和赋值?

我无法理解自动添加默认ctors背后的基本原理。特别是我觉得很尴尬,每次我只需要添加一个空的虚拟析构函数,仅此而已,我松散了移动的东西,但是添加它们我松散了拷贝和默认的东西,所以我最终添加了所有这些代码块:virtual~SomeClass(){}//youaretheguilty!//virtual~SomeClass()=default//wouldbethesameSomeClass(SomeClass&&)=default;//nomoreauto-addedSomeClass&operator=(SomeClass&&)=default;//nomoreauto-addedS

c++ - 匿名 namespace 内部/外部的 Typedef?

在.cpp文件中,这两种方式有什么区别/偏好吗?//filescopeoutsideanynamespaceusingX::SomeClass;typedefSomeClass::BufferMyBuf;速度/速度namespace{//anonymoususingX::SomeClass;typedefSomeClass::BufferMyBuf;} 最佳答案 我会说第二种用法相当不常见,至少在我目前看到的代码中是这样(而且我已经看到相当多的C++代码)。您能解释一下第二种技术背后的原因吗?您通常会在C++实现文件中使用匿名命名空

c++ - 将从方法返回的原始指针存储到智能指针中

场景:我正在使用旧C++库中的方法,该方法返回指向SomeClass的原始指针,其中SomeClass是从库头导出的类,例如SomeClass.h以下是我正在使用的LibraryMethod的签名:SomeClass*LibraryMethod();我无权更改库。我仅使用典型场景的二进制和公共(public)header。我不想在我的代码部分使用原始指针。因此,我有一个sharedpointerSomeClass在我的代码部分使用库API。std::shared_ptrsome_class;我这样初始化是为了避免将原始指针存储到SomeClasssome_class=(std::sha

ios - 为什么我的 Swift 类的扩展在定义文件之外不可见?

我有一个Xcode为我的CoreData模型生成的NSManagedObject类。@objc(SomeClass)classSomeClass:NSManagedObject{/*...*/}它在名为“SomeClass.swift”的文件中定义。我想扩展这个类,所以我创建了“SomeClassExtension.swift”。我这样定义扩展:extensionSomeClass{classfunctypeMethod1(){}funcinstanceMethod2(){}}这些扩展方法可以在这个定义文件中使用,但在它之外是不可见的。是什么导致了这个问题?

关于按引用传递的 ios

根据我目前的理解,“按引用传递”的推荐方式(启用ARC)如下:-(void)somefunc:(someclass**)byref;//and'someclass**'shouldbeinferredto'someclass*__autoreleasing*'//amiright?//orwecouldjustexplicitlydefineitlike-(void)somefunc:(someclass*__autoreleasing*)byref;但是,从对该主题的回答来看,HandlingPointer-to-PointerOwnershipIssuesinARC.似乎-(voi