Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Для векторов этот поток на форумах MSDN имеет фрагмент кода для установки часов на векторном индексе, который мог бы помочь.
Если Вы хотите наблюдать больше чем один элемент одновременно, можно добавить запятую и число элементов как так:
(v._Myfirst)[startIndex], count
Однако примечание, что количество должно быть константой, это не может быть результат другого выражения.
В VS2005 и VS 2008 Вы видите содержание контейнеров STL. Правила для того, чтобы достигнуть данные находятся в autoexp.dat "c:\Program Files\Microsoft Visual Studio 9\Common7\Packages\Debugger\autoexp.dat".
AutoExp.dat предназначен, чтобы быть настроенным. Однако STL defs находится под разделом по имени [Visualizer]. Если бы можно выяснить язык, используемый в том разделе, большем количестве питания Вам, однако я рекомендовал бы просто оставить ту часть в покое.
Autoexp.dat существовал в VS2003, но не было никакой поддержки контейнеров STL ([Visualizer] не существовал). В VS2003 необходимо вручную переместиться по базовому представлению данных.
Путем изменения autoexp.dat возможно добавить правила для навигации по представлению данных собственных типов, таким образом, их легче отладить. Если Вы делаете это, необходимо только добавить к материалу под [AutoExp]. Будьте осторожны и продолжите заднюю часть этого файла перед изменением его.
Вы могли создать пользовательский visualiser, Проверяют это: http://www.virtualdub.org/blog/pivot/entry.php?id=120
Visual Studio 2008, по крайней мере, для меня, отображает содержание контейнеров STL в стандартном поле контента наведения мыши.
Вы также можете щелкнуть правой кнопкой мыши любое значение в ваших часах и выбрать «добавить часы». Это может быть полезно, если вам нужно взглянуть только на один элемент карты или набора.
Это также приводит к решению, которое christopher_f разместил для векторов - ((v) ._ Myfirst) [index]
В 2015 году я не смог получить ни одного из этих рабочих
, поэтому я написал немного кода
std::vector<std::string> vs(M_coins + 1);
for (unsigned long long i = 0; i <= M_coins; i++) {
std::for_each(memo[i].begin(), memo[i].end(), [i, &vs](long long &n) {
vs[i].append(std::to_string(n));
});
}
// now vs is ready for use as vs[0], vs[1].. so on, for your debugger
в основном то, что я сделал, было преобразовано вектор в строку. у меня был вектор вектора, поэтому у меня был строковый вектор для заполнения.
std::vector<std::string> s;
std::for_each(v1.begin(), v1.end(), [&s](long long &n) {
s.append(std::to_string(n));
});
// now s is ready for use, for your debugger
надеюсь, что это помогло.