C ++ обрабатывает исключение bad_alloc, код ошибки C2276 - PullRequest
0 голосов
/ 10 ноября 2019

Я пытался создать программу на C ++, которая может перехватывать и обрабатывать исключение bad_alloc.

Во время написания кода я не заметил никаких ошибок, но когда я попытался скомпилировать этот код, я получил код ошибки C2276и C3876 в Microsoft Visual Studio Community 2017.

Кажется, что сама ошибка появляется в блоке catch {...} кода.

#include "pch.h"
#include <iostream>
#include <string>

using namespace std;

class CanGoWrong {
public: 
    CanGoWrong() {      
        char *pMemory = new char[9999999999];
        delete[] pMemory;
    }
}; 

int main()
{
    try {
        CanGoWrong wrong;
    }
    catch(std::bad_alloc &e){
        cout << "Caught exception: "<< e.what << e << endl;
    }

    cout << "Still running" << endl;

    return 0;
}

Ошибка с кодом C3867 («нестандартный синтаксис, использование &»). Я исправил это так:

с

cout << "Caught exception: "<< e.what << e << endl;

до:

cout << "Caught exception: "<< &e.what << e << endl;

Тем не менее, ошибка C2276 не исчезнет. Я думаю, что есть что-то сделать, используя базовый класс std :: exception.

Я хочу понять, как это сделать правильно, этот код является примером курса, которому я должен следовать и понимать.

...