草庐IT

c++ - 重载父类(super class)的函数

C++标准中有什么东西阻止我重载父类(superclass)的函数吗?从这对类开始:classA{//superclassintx;public:voidfoo(inty){x=y;}//originaldefinition};classB:publicA{//derivedclassintx2;public:voidfoo(inty,intz){x2=y+z;}//overloaded};我可以轻松调用B::foo():Bb;b.foo(1,2);//[1]但是如果我尝试调用A::foo()...Bb;b.foo(12);//[2]...我收到一个编译器错误:test.cpp:Inf

c++ - 是否可以在不对抽象的父类中的函数使用 virtual 关键字的情况下覆盖 C++ 子类中的函数?

classParent{public:voidfunc1();//Completemeaningfuldefinitioninparentgiven.virtualHRESULTfunc2()=0;//BcozofthisfunctionParentclassisabstract.};classChild:publicParent{public:voidfunc1();//Differentdefinitioninchild.};这在C++中可行吗?我正在重写func1(),它不是虚拟的,它已经在父抽象类中有一个定义。 最佳答案 [

c++ - 内部 typedef 的变化取决于父类

我放弃了,请帮忙解释一下这个行为。我在下面给出的示例是我能想到的最简单的示例,但它总结了问题(在启用了c++14的Cygwin上使用g++4.9.2)。我想创建一个行为类似于std::mem_fn的类。这是我的类(class):templatestructproperty{staticRget(constT&t){return(t.*P)();}};其中R是返回类型,T是我感兴趣的对象的类型。第三个模板参数是指向成员函数的指针。到目前为止,还不错。然后我创建一个简单的类,它包含一个整数,如下所示classdata_class{public:unsignedget_data()const

AndroidX Room 未解析的父类(super class)型 RoomDatabase

当我尝试构建我的应用时,我收到了这个编译错误:Supertypesofthefollowingclassescannotberesolved.Pleasemakesureyouhavetherequireddependenciesintheclasspath:com.example.persistence.AppDatabase,unresolvedsupertypes:androidx.room.RoomDatabase持久性设置在单独的Android模块(持久性)中。build.gradle//KotlinStdLibimplementation"org.jetbrains.kot

AndroidX Room 未解析的父类(super class)型 RoomDatabase

当我尝试构建我的应用时,我收到了这个编译错误:Supertypesofthefollowingclassescannotberesolved.Pleasemakesureyouhavetherequireddependenciesintheclasspath:com.example.persistence.AppDatabase,unresolvedsupertypes:androidx.room.RoomDatabase持久性设置在单独的Android模块(持久性)中。build.gradle//KotlinStdLibimplementation"org.jetbrains.kot

c++ - 按值将子类对象传递给采用父类(super class)对象的函数是否是明确定义的行为?

here等相关问题我都看过了和here关于这个话题,他们都描述了对象切片,但没有一个解决它是否安全、可靠和可预测。是否有来自标准或编译器的保证,如果我按值将子类对象传递给需要父类(superclass)的方法,则被切掉的部分恰好是子类,我将能够使用切片的父类(superclass)对象而不用担心未定义的行为? 最佳答案 是的,它是安全、可靠和可预测的,因为它由标准定义良好(它只会从派生类对象复制构造一个基类对象)。但不,它不安全,不应依赖它,并且通常被视为不可预测的,因为您的读者不知道发生了什么。当其他人稍后尝试修改您的代码(包括您

c++ - C++ 中集合/容器的接口(interface)/父类(super class)

我来自Java世界,目前正在构建一个小型C++程序。我有一个对象可以做一些工作,然后将工作结果作为列表返回。现在一天后,我更改了对象的行为以将结果保存在一个集合中以避免容器中出现重复。但是我不能简单地返回集合,因为我第一次使用列表作为接口(interface)。是否有一个通用的容器接口(interface),我可以使用它来指定我的对象的接口(interface)而忘记我在内部使用的容器类型?目前我正在创建一个集合,添加所有值,然后从该集合创建一个列表:returnstd::list(this->mySet.begin(),this->mySet.end())好像有点奇怪。

c++ - 父类中 protected 数据在子类中不可用?

我很困惑:我认为protected数据可由C++中给定类的子级读取/写入。以下代码片段无法在MS编译器中编译classA{protected:intdata;};classB:publicA{public:B(A&a){data=a.data;}};intmain(){Aa;Bb=a;return0;}错误信息:Microsoft(R)32-bitC/C++OptimizingCompilerVersion15.00.30729.01for80x86Copyright(C)MicrosoftCorporation.Allrightsreserved.demoFail.cppdemoFa

windows - (MFC) 如果控件是私有(private)成员,父类如何接收控件的消息?

假设我的主类有一个私有(private)成员,它是从CTreeView控件派生的类。我如何处理来自主类本身的TreeView控件的消息?这类似于VisualStudios为您构建的MDI基础应用程序,其中您有两个名为CClassView和CFileView的可停靠TreeView控件,每个控件都有一个从CTreeView派生的私有(private)成员。我可以像这样将消息从子成员控件CViewTree传递到我的CFileView类吗?voidCViewTree::OnTvnSelchanged(NMHDR*pNMHDR,LRESULT*pResult){GetParent()->Sen

java - MySQL 上的@GeneratedValue 多态抽象父类(super class)

在使用Hibernate和MySQL的SpringMVC应用程序中,我有一个抽象父类(superclass)BaseEntity管理模型中所有其他实体的ID值。id字段使用@GeneratedValue。每当我的代码试图保存任何扩展BaseEntity的子类时,我都会遇到问题。问题来自为@GeneratedValue选择GenerationType。在我的代码中BaseEntity的子类试图保存到底层MySQL数据库的每个地方,我都会收到以下错误:ERRORSqlExceptionHelper-Table'docbd.hibernate_sequences'doesn'texist我在