C ++错误C2040:' e' :'记录器'不同的间接水平来自' const std :: exception&'

时间:2016-01-02 04:29:22

标签: c++ logging

我收到此错误:

C ++错误C2040:' e' :'记录器'间接级别与' const std :: exception&'

不同

我已经看到,当某些内容被宣布两次时,通常会发生此错误,但我无法看到它有什么问题。请看看我的尝试,因为我正在努力做一个记录器课程。

Main.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;
}

3 个答案:

答案 0 :(得分:1)

这里有你的双重声明,例外var result = new List<int>(); var number = 500; do { result.Add(number); number+= 150; } while (number <= 2000000); e实例。

Logger

答案 1 :(得分:1)

我相信您认为您将e传递给Logger构造函数,但实际上您正在创建一个名为e的新变量。

而不是

catch (const exception &e)
{
    Logger e;
}

catch (const exception &e)
{
    Logger l(e);
}

答案 2 :(得分:0)

catch (const exception &e)

创建名为e的参数,其类型为const exception &。然后

Logger e;

在同一范围内声明另一个e的不同类型。您需要更改其中一个变量名称