C++错误 C2040:"e":"记录器"的间接级别与"常量标准::异常 &"不同
C++ error C2040: 'e' : 'Logger' differs in levels of indirection from 'const std::exception &'
我得到这个错误:
C++错误C2040:"e":"Logger"与"const std::exception&"的间接级别不同
我看到这个错误通常发生在两次声明某个东西时,但我看不出它有什么问题。请看看我的尝试,因为我正在尝试创建一个logger类。
主要.cpp
#include "Logger.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
try
{
string("abc").substr(10);
}
catch (const exception &e)
{
Logger e;
}
system("PAUSE");
return 0;
}
我相信您认为您正在将e
传递给Logger
构造函数,但实际上您正在创建一个名为e
的新变量。
代替
catch (const exception &e)
{
Logger e;
}
尝试
catch (const exception &e)
{
Logger l(e);
}
这里有您的双重声明,异常e
和Logger
实例。
catch (const exception &e)
^
{
Logger e;
^
}
catch (const exception &e)
创建一个名为e
、类型为const exception &
的参数。然后
Logger e;
声明了同一作用域中另一个不同类型的e
。您需要更改其中一个变量名
相关文章:
- C4204:使用的非标准扩展:非常量聚合初始值设定项
- 从常量字符*、字符*参数到标准::字符串的直接转换接口
- 常量转发引用给出错误 C2440:"正在初始化":无法从"常量标准::字符串"转换为"常量标准::字符串 &&"
- 从另一个常量标准::映射初始化一个常量标准::映射的一部分
- 有没有办法为静态对象成员定义一个符合开关标准的常量?
- 兼容的声明 __attribute__ ((节( ".abc.dfe" ))) 常量易失性 uint8 属性变量 = 0;- 符合MISRA标准
- C++17 标准 - 抛弃静态常量
- 在符合 ODR 标准的头文件中使用常量
- C++标准是否保证函数返回值具有常量地址?
- 静态常量标准::矢量
- 用于定义公共变量静态常量整数的C++标准
- 在 constexpr 中使用的非常量:标准怎么说
- C++11标准中的核心常量表达式是什么
- C++11:常量和引用类型上“auto”操作的标准引用
- 带有标准容器和常量引用的c++代码显示出意外的内存
- 如何将常量标准::矢量<无符号字符>转换为字符
- 标准::矢量元素中的常量引用
- C++错误 C2040:"e":"记录器"的间接级别与"常量标准::异常 &"不同
- 标准库/模板化容器的常量语义的经验法则
- 奇怪的标准::带有常量字符*的cout行为