草庐IT

local-class

全部标签

c++ - 无法将 "member pointer to derived class"转换为 "member pointer to base class"

使用指向基类的指针调用类的虚成员函数当然是C++中非常常见的事情。所以我觉得很奇怪,当你有一个成员指针而不是一个普通指针时,似乎不可能做同样的事情。请考虑以下代码:structB{virtualvoidf();};structD:B{virtualvoidf();};structE{Bb;Dd;};intmain(){Ee;//Firstwithnormalpointers:B*pb1=&e.b;//OKB*pb2=&e.d;//OK,BisabaseofDpb1->f();//OK,callsB::f()pb2->f();//OK,callsD::f()//Nowwithmember

C++,如何在复制构造函数中正确复制 std::vector<Class *>?

我正在使用这两个类//ThisisgenericdatastructurecontainingsomebinarydataclassA{public:A();A(constA&);~A();}//MaindatacontainerclassB{public:B();B(constB&);~B();protected:std::vectordata;}//CopyconstructorforclassbB::B(constB&orig):data(){for(std::vector::const_iteratorit=orig.data.begin();it我想这门课会完成它的工作,但我

c++ - 这个类(class)的人数是多少?为什么?

我有两个类如下classA{};classB{inta[];};intmain(){cout我知道空类的大小是1,但为什么B类的大小会变成零?? 最佳答案 GCC允许零长度数组作为扩展:http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html和:Asaquirkoftheoriginalimplementationofzero-lengtharrays,sizeofevaluatestozero. 关于c++-这个类(class)的人数是多少?

c++ - SFINAE 只有在可能的情况下才有类(class)成员

我做了一个类型安全的ID类,但现在我想支持operator++如果底层类型也有它。来自this和thisanswears我已经想出了2个替代方案,但是当用AId实例化时它们都失败了:templatestructAId{typedefAIdtype;typedefThandled_type;typedefTIDvalue_type;private:value_typeid;templatestructIsIncrementable{templateusingrm_ref=typenamestd::remove_reference::type;typedefchar(&yes)[1];ty

c++ - 是否有可能有一个像 'template<class T> X(){}' 这样的模板化构造函数?

structX{templateX(){}};是否可以实例化这种类型? 最佳答案 是的,有这样一个构造函数是可能的,但是调用它是不可能的。模板化构造函数的所有模板参数都必须从参数列表中推导出来或具有默认值。在您的示例中,您无法实例化该类。[临时内存][Note:Becausetheexplicittemplateargumentlistfollowsthefunctiontemplatename,andbecauseconversionmemberfunctiontemplatesandconstructormemberfuncti

c++ - 我如何在图书馆内让 main 成为我类(class)的 friend ?

请参阅myfirstattemptatansweringthis.我之前为了简化事情而忽略了讲述整个故事。事实证明我的例子有效!对不起。整个故事是,这是一个库,在一个文件中包含一个类,在另一个文件中包含主要内容,所有这些都链接到我的库中。该库为流程框架提供了基础,这就是为什么main在库中而不是流程中。下面是我所拥有的精简版。pf.hppusingnamespacestd;namespaceMyNamespace{classProcessManager{public:friendintmain(intargc,char**argv);private:voidtest();};};pf.

android - Kotlin 与 Android : Base classes and Kotlin Android Extensions

所以我使用了KotlinAndroidExtensions我发现它非常易于使用并且非常值得。没有了findViewById或Butterknife.Bind(...).除了一种情况,我发现这一切都没有问题。在基类中,例如BaseActivity,通常会有一堆View出现在所有布局中,例如工具栏。以及changeToolbarColor()等常见操作,或setToolbarTitle().在这种简单的情况下,我不能使用KotlinAndroidExtensions因为,因为它是一个基类,View本身将出现在多个布局中,并且不能导入属性。在这种情况下,我只是简单地使用bylazy{find

android - Kotlin 与 Android : Base classes and Kotlin Android Extensions

所以我使用了KotlinAndroidExtensions我发现它非常易于使用并且非常值得。没有了findViewById或Butterknife.Bind(...).除了一种情况,我发现这一切都没有问题。在基类中,例如BaseActivity,通常会有一堆View出现在所有布局中,例如工具栏。以及changeToolbarColor()等常见操作,或setToolbarTitle().在这种简单的情况下,我不能使用KotlinAndroidExtensions因为,因为它是一个基类,View本身将出现在多个布局中,并且不能导入属性。在这种情况下,我只是简单地使用bylazy{find

c++ - 如何让 boost::make_shared 成为我类(class)的 friend

我编写了一个带有protected构造函数的类,因此只能使用静态create()函数生成新实例,该函数将shared_ptr返回我的类。为了提供有效的分配,我想在create函数中使用boost::make_shared,但是编译器提示说我的类构造函数在boost::make_shared中受到保护。我决定让我的boost::make_shared成为我类的friend,但我对语法感到困惑。我试过了templatefriendboost::shared_ptrboost::make_shared(constConnectionManagerPtr&,conststd::string&)

c++ - 我什么时候应该为我的类(class)提供析构函数?

这似乎是一个相当微不足道的或至少是常见的问题,但我无法在google或SO上找到令人满意的答案。我不确定什么时候应该为我的类实现析构函数。一个明显的情况是当类包装到文件的连接时,我想确保连接已关闭,因此我在析构函数中关闭它。但我想知道一般情况下,我怎么知道是否应该定义析构函数。有哪些指导方针可以检查我是否应该在这个类中使用析构函数?我能想到的一个这样的准则是,类是否包含任何成员指针。默认析构函数会在删除时销毁指针,但不会销毁它们指向的对象。所以这应该是用户定义的析构函数的工作。例如:(我是C++新手,所以这段代码可能无法编译)。classMyContainer{public:MyCon