c++ - 从C++中的类声明继承

标签 c++ inheritance

当你想从C++中的类继承时,在下面第一行声明std是非法的吗?

#ifndef HWEXCEPTION_H
#define HWEXCEPTION_H

#include <stdexcept>


class HWException : public std::run_time_error
{
    void testException(int num);
};

#endif

对比

using std::run_time_error
class MyClass : public run_time_error

这是假设您在顶部有#include。我得到了 std::run_time_error 的编译错误,但似乎不是通过第二种方式进行的,我想知道为什么。

 error C2039: 'run_time_error' : is not a member of 'std'
 'run_time_error' : base class undefined
1>main.cpp
 error C2039: 'run_time_error' : is not a member of 'std'
 error C2504: 'run_time_error' : base class undefined

最佳答案

两者都是合法的。但是假设这是在一个头文件中,你不应该使用 using 指令版本,因为它将名称放在全局命名空间中,这可能会给你的头文件的用户带来问题。

编辑:刚刚注意到您的类名有误:

#include <stdexcept>
class MyClass : public std::runtime_error {
};

是你需要的。

关于c++ - 从C++中的类声明继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2829563/

相关文章:

c++ - QCompleter - 如何从文件导入数据

c++ - Robai Cyton Joint Velocity 使用 Actions API

ruby - 为什么 Ruby 模块包含排除了模块的单例类?

java - 初始化子类中不同类型的 'final' 字段

inheritance - 我收到此错误“运算符 + 无法应用于 java.lang.string void”

c++ - #include <winsqlite/winsqlite3.h> 在一个项目中工作,而不在另一个项目中工作

c++ - 有没有我可以使用 opengl 3+ 的虚拟机? virtualbox 和 vmware 没有

c++ - 哪些 C++0x header 应该定义 nullptr?

javascript - React 高阶元素 - 传递 Prop 可以走多远

javascript - 使用 Object.create 创建的对象会继承原型(prototype)吗?