Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Что означает, что шаблон «может» иметь связь? Что такое шаблонная связь?
Все имена либо имеют внешнюю связь, внутреннюю связь, либо не имеют связи (C ++ 03 §3.5p2), но это не та же связь, что и языковая связь. (Я знаю, что это сбивает с толку. C ++ 0x также значительно меняет положение вещей с помощью связывания.) Внешнее связывание требуется для всего, что используется в качестве аргумента шаблона:
void f() {
struct S {};
vector<S> v; // Not allowed as S has internal linkage.
}
Обратите внимание, что в C ++ 98 есть "может «в том, что вы цитировали в §14p4, но C ++ 03 удаляет« может », поскольку шаблоны не могут быть объявлены в контексте, который дал бы им внутреннюю связь:
void f() {
// Not allowed:
template<class T>
struct S {};
}