草庐IT

virtual-directory

全部标签

c++ - 当我覆盖 C++ 函数时,是否应该再次指定 'virtual'?

当我覆盖一个虚函数时:classGeoff{public:virtualintgetArea(){return0;}}我应该在覆盖它时再次指定“虚拟”吗?它有什么不同吗?我知道这两种方法似乎都可以正常工作,只是想知道是否还有更多。classGeorge:publicGeoff{public:virtualintgetArea(){returnx*y;}} 最佳答案 如果你使用C++11,你应该使用override相反,这两个文件都记录了您正在覆盖虚函数并检查匹配的虚函数是否存在于要覆盖的基础中。intgetArea()overrid

c++ - 当我覆盖 C++ 函数时,是否应该再次指定 'virtual'?

当我覆盖一个虚函数时:classGeoff{public:virtualintgetArea(){return0;}}我应该在覆盖它时再次指定“虚拟”吗?它有什么不同吗?我知道这两种方法似乎都可以正常工作,只是想知道是否还有更多。classGeorge:publicGeoff{public:virtualintgetArea(){returnx*y;}} 最佳答案 如果你使用C++11,你应该使用override相反,这两个文件都记录了您正在覆盖虚函数并检查匹配的虚函数是否存在于要覆盖的基础中。intgetArea()overrid

c++ - 常见问题解答 : Why does dynamic_cast only work if a class has at least 1 virtual method?

这在C++中无法编译:classA{};classB:publicA{};...A*a=newB();B*b=dynamic_cast(a); 最佳答案 因为dynamic_cast只能向下转换多态类型,所以标准这么说。您可以通过向基类添加virtual析构函数来使您的类具有多态性。事实上,你可能应该无论如何(见脚注)。否则,如果您尝试通过A指针删除B对象,您将调用UndefinedBehavior.classA{public:virtual~A(){};};瞧!脚注关于在多态类型中需要虚拟析构函数的“规则”有一些异常(except

c++ - 常见问题解答 : Why does dynamic_cast only work if a class has at least 1 virtual method?

这在C++中无法编译:classA{};classB:publicA{};...A*a=newB();B*b=dynamic_cast(a); 最佳答案 因为dynamic_cast只能向下转换多态类型,所以标准这么说。您可以通过向基类添加virtual析构函数来使您的类具有多态性。事实上,你可能应该无论如何(见脚注)。否则,如果您尝试通过A指针删除B对象,您将调用UndefinedBehavior.classA{public:virtual~A(){};};瞧!脚注关于在多态类型中需要虚拟析构函数的“规则”有一些异常(except

c++ - CMake include_directories 和 add_subdirectory 之间的区别?

我正在学习CMake以构建C++代码,并在以下概念中苦苦挣扎。在我的根目录中,我有一些cpp文件和一个CMakeLists.txt,它成功地在gen-cpp目录中生成了一些Thrift代码。我的根级CMakeLists.txt包含:include_directories("路径到根目录"/gen-cpp)。(以及相关的Thrift自动生成和包含。一切编译正常,但我得到运行时动态库链接错误,因为undefinedsymbol引用了gen-cpp目录中定义的类。当我将目录中的文件移动到根级别时,它运行良好。我错过了什么?(我还调整了根级cpp目录中的#include以指向“path-to-

c++ - CMake include_directories 和 add_subdirectory 之间的区别?

我正在学习CMake以构建C++代码,并在以下概念中苦苦挣扎。在我的根目录中,我有一些cpp文件和一个CMakeLists.txt,它成功地在gen-cpp目录中生成了一些Thrift代码。我的根级CMakeLists.txt包含:include_directories("路径到根目录"/gen-cpp)。(以及相关的Thrift自动生成和包含。一切编译正常,但我得到运行时动态库链接错误,因为undefinedsymbol引用了gen-cpp目录中定义的类。当我将目录中的文件移动到根级别时,它运行良好。我错过了什么?(我还调整了根级cpp目录中的#include以指向“path-to-

c++ - 如何解决 "pure virtual method called"

我明白为什么会发生这种情况,但我一直在尝试解决它...这是我的代码在我的程序退出时生成错误(因此导致崩溃)时所做的事情...purevirtualmethodcalledSomeClass::~SomeClass(){BaseClassObject->SomePureVirtualMethod(this);}voidDerivedClass::SomePureVirtualMethod(SomeClass*obj){//Dostufftoremoveobjfromacollection}我从来没有给newSomeClass打过电话但我有一个QList我附加了SomeClass*反对。S

c++ - 如何解决 "pure virtual method called"

我明白为什么会发生这种情况,但我一直在尝试解决它...这是我的代码在我的程序退出时生成错误(因此导致崩溃)时所做的事情...purevirtualmethodcalledSomeClass::~SomeClass(){BaseClassObject->SomePureVirtualMethod(this);}voidDerivedClass::SomePureVirtualMethod(SomeClass*obj){//Dostufftoremoveobjfromacollection}我从来没有给newSomeClass打过电话但我有一个QList我附加了SomeClass*反对。S

解决Git配置error:could not lock config file....No such file or directory

问题说明新安装git出现无法设置用户名和邮箱的方法。$gitconfig--globaluser.name“用户名”$gitconfig--globaluser.email“邮箱”当在gitbash里设置用户名邮箱出现类似以下提示时的解决方法。GITerror:couldnotlockconfigfileC:/Users/FZQ/Desktop/%USERPROFILE%/…Nosuchfileordirectory这里说在我的电脑C盘/Users/FZQ/Desktop/中没有找到对应的文件或者目录,判断是环境配置出了问题。解决方法此电脑右键选择属性下拉找到高级系统设置在系统变量中找到HOM

c++ - fatal error C1083 : Cannot open include file: 'xyz.h' : No such file or directory?

我正在使用VisualStudio2005创建一个项目。我在项目中的文件夹结构为:一个名为代码的文件夹。此文件夹包含所有*.cxx文件。现在,我在头文件xyz.h中创建了一个类xyz。并在代码文件夹中定义了xyz.cxx中的所有内容。但是现在当我尝试用VisualStudio编译它时,它会抛出一个错误“fatalerrorC1083:无法打开包含文件:'xyz.h':没有这样的文件或目录”。如何纠正这个问题。 最佳答案 将“代码”文件夹添加到VisualStudio中的项目属性中项目->属性->配置属性->C/C++->附加包含目录