草庐IT

c++ - "class template"与 "template class"

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Whatisthedifferencebetweenatemplateclassandaclasstemplate?我见过几个C++大师因为调用类似的东西而抨击人们templateclassSomeClass{//...};模板类而不是类模板。(请注意,这不是什么大错特错,但表明某人不是经验丰富的C++程序员)是的,正确的词是“类模板”——因为它是用于生成类的模板。但我不明白为什么在典型的对话中区分很重要。没有人听/读你写的东西会明白你所说的是什么意思。在标准或其他方面是否有特定使用“模板类”一词的情况,这使

c++ - boost序列化异常: unregistered class,序列化多态基础问题

我一直在阅读、交叉引用,但最终没有找到连贯的示例和答案。我想做的很简单,但我显然遗漏了一些东西。在英语中,我有一个具有两个抽象基础的类结构(纯BB派生自纯AA),我将其管理为:std::vector我想序列化另一个包含这个vector的对象。所有除了这个vector都可以很好地序列化,但是一旦它到达vector,它就会抛出:terminatecalledafterthrowinganinstanceof'boost::archive::archive_exception'what():unregisteredclass-derivedclassnotregisteredorexport

c++ - 尝试包装函数返回值时出现 "<class name> does not provide a call operator"错误

我正在尝试编写一个函数,它将一个仿函数作为参数,调用仿函数,然后返回它的返回值,并将其包装在boost::shared_ptr中。以下拒绝编译,我完全没有想法。我得到“std::vector不提供调用操作符”(大致)。我在MacOSX上使用Clang3.1。templateboost::shared_ptrReturnValueAsShared(boost::functionfunc){returnboost::make_shared(func());}这是我尝试使用它的上下文:make_shared>>>(bind(ReturnValueAsShared>,bind([afuncti

c++ - 类(class)友元——一个谜

我是初学者级别的面向对象编程爱好者。我遇到了以下难题:classA{};classB{protected:friendclassA;};classC{public:friendclassB;};引用上面的示例代码,假设上面的类都有数据成员,那么在A的成员声明中可以使用C的哪些成员名称?仅限私有(private)成员(member)仅限protected成员C的所有数据成员仅限公共(public)成员(member)不是C的数据成员*我的选择是答案4,因为友元是不可传递的。因此,A是B的friend,但A不是C的friend(即使B是C的friend)。这是正确的想法吗?另外,我的问题是

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.