草庐IT

Hash_class

全部标签

c++ - 用父类(super class)的实例覆盖子类的实例

为了解决问题(实际上是在Ada中),我想出了以下代码。为什么它是合法的?classSuperclass{public:virtualvoidAnnounce(){printf("Iamthesuperclass\n");}};classSubclass:publicSuperclass{public:voidAnnounce(){printf("Iamthesubclass\n");}};intmain(){Superclassosuper;Subclassosub;Superclass*p=&osub;*p=osuper;osub.Announce();return0;}在main(

c++ - 在没有虚方法或父类(super class)的类中,假设(第一个成员变量的地址)== this 是否安全?

我创建了一个私有(private)API,它假定类中第一个成员对象的地址与类的this指针相同......这样成员对象就可以简单地派生出指向该对象的指针它是的成员,而不必显式存储指针。鉴于我愿意确保容器类不会从任何父类(superclass)继承,不会有任何虚拟方法,并且执行此技巧的成员对象将是声明的第一个成员对象,将该假设对任何C++编译器都有效,还是我需要使用offsetof()运算符(或类似运算符)来保证正确性?换句话说,下面的代码在g++下实现了我所期望的,但它能在任何地方运行吗?classMyContainer{public:MyContainer(){}~MyContain

c++ - 嵌入式 C++ : Initialization of an array member of a struct within a class, 大小省略

您好,在此先感谢您对以下问题的任何帮助。编辑:我忘了补充一点,这是在无法访问STL功能的嵌入式系统上。我很抱歉遗漏了这条非常重要的信息。这是我第一次广泛使用C++进行编码,所以我忘了提及显而易见的事情。我回来补充这个事实,这个问题已经收到了一些回复。感谢大家这么快的回复!我正在尝试初始化结构的数组成员,该结构又是C++类的公共(public)成员。结构中省略了数组大小。这是一个例子://ClassA.hClassA{public:structStructA{StructBstructs[];};structStructB{//stuff};ClassA();//etc};//Class

c++ - (SWIG C++ 到 Python)警告 301 : class keyword used, 但不是在 C++ 模式下

我正在尝试为python编译C++扩展。我创建了一个接口(interface)文件foo.i,如下所示:%modulefoo%include"typemaps.i"//Forpointerstoprimitivetypes%include"std_string.i"//std::stringmapping%applyconststd::string&{std::string*foo};//datatypescontainingstd::stringmembers%{#defineSWIG_FILE_WITH_INIT#include"../path/to/c++/header/file

以非专用模板作为值的 C++ hash_map

我想要一个std::hash_map将(例如)常规std:string映射到多个不同的特化另一个模板类。这个例子是我想要实现的(虽然它是错误的并且无法编译):templateclassFoo{public:Foo(T_value){this->value=_value;}private:Tvalue;};intmain(){hash_mapvarious_foos;various_foos["foo"]=Foo(17);various_foos["bar"]=Foo(17.4);} 最佳答案 map只能存储单一的值类型,所以不能直接

c++ - C++ 模板是否能够从父类获取 "forward any class function"?

classFoo{public:voidmethodA();};classManagedFoo{FoofooInst;public:voidmethodA(){doSomething();fooInst.methodA();}};现在我想把ManagedFoo做成一个模板,管理任何类而不仅仅是Foo,并且在调用Foo的任何函数之前,先调用doSomething。templateclassManager{_TyManaged_managedInst;voiddoSomething();public:/*Forwardeveryfunctioncalledby_managedInst*//

c++ - 关于 C++ 中 sizeof(class) 用法抛出的错误

当我用C++编译我的项目时,MSVC抛出以下错误:error#94:thesizeofanarraymustbegreaterthanzero执行sizeof时在以下行中抛出错误:if(sizeof(MyNamespace::MyClass)==60)MyClass是这样定义的:classMyClass:publicParentClass{public:MyClass(void*pCreate,inta,intb,boolc):ParentClass(pCreate,a,b,c){}virtualinlinevoidmyFunc(){//something}private:virtua

c++ - "Expected class-name"...析构函数实现中的问题

我正在尝试实现堆栈和队列。我还获得了用于测试堆栈和队列的代码(以查看它们各自的功能是否正常工作)。我已经实现了stack和quete的功能,但是在尝试编译它们时出现错误:在析构函数“Stack::~Stack()”中'('标记前的预期类名在他们两个。以下是通用的Stack类:templateclassStack{Listlist;public:Stack();Stack(constStack&otherStack);~Stack();}列表类:templateclassList{ListItem*head;public:List();List(constList&otherList);

c++ - 错误 : expected primary-expression before ‘>’ : templated function that try to uses a template method of the class for which is templated

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭8年前。在使用模板和仿函数(未出现在这个问题中)时,我最终遇到了以下简化的问题。以下代码(也可用here)classA{public:templateboolisGood(intin)const{constTf;returninbooltryEvaluator(T&evaluator,intvalue){returnevaluator.isGood(value);}intmain(intargc,constchar*argv[]

c++ - "class ClassName;"放在其他类定义的头文件中是什么意思?

我对这行代码classTreeItem;有点困惑。classTreeItem;在本文件中未包含的其他文件中定义。我必须在一本书中查找这个问题,但我确信这个问题的答案非常简单。#ifndefTREEMODEL_H#defineTREEMODEL_H#include#include#includeclassTreeItem;//here,whatdoesthisdo??//![0]classTreeModel:publicQAbstractItemModel{...public:...private:...};//![2]#endif//TREEMODEL_H