Какой вектор выбросил индекс вне диапазона исключений?

Я хотел бы получить доступ к ссылке на std::vector который выдает исключение вне диапазона или, по крайней мере, номер строки, в которую было сгенерировано исключение (аналогично трассировке стека в Java). Вот пример программы:

#include <iostream>
#include <vector>
std::vector<int> vec1;
std::vector<int> vec2;
vec1.push_back(1);
vec2.push_back(2);
try
{

std::cout << vec1.at(1) << std::endl;
std::cout << vec2.at(1) << std::endl;
}
catch(Exception e)
{
// e.lineNumber()? e.creator_object()?
std::cout << "The following vector is out of range: " << ? << std::endl;
// or...
std::cout << "There was an error on the following line: " << ? << std::endl;
}

Я знаю, что этот пример тривиален, но я надеюсь, что он демонстрирует, какую функциональность я ищу.

РЕДАКТИРОВАТЬ: Реализация, от g ++ — версия: g ++ (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)

0

Решение

Вам нужно будет сделать это самостоятельно:

#include <iostream>
#include <vector>

std::vector<int> vec1;
std::vector<int> vec2;

vec1.push_back(1);
vec2.push_back(2);

try
{
std::cout << vec1.at(1) << std::endl;
}
catch(std::exception& e)
{
std::cout << "The following vector is out of range: " << "vec1" << std::endl;
}

try
{
std::cout << vec2.at(1) << std::endl;
}
catch(std::exception& ex)
{
std::cout << "The following vector is out of range: " << "vec2" << std::endl;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]