当你想从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/