verwendet Ich habe "const ObjArray&
" als Argument für die ObjArray-Vorlage verwendet, ohne darüber nachzudenken. Es scheint gut zu funktionieren, aber es sah aus, als ich es wieder las. Sollte es nicht "const ObjArray<T> &
" sein? Ist es in Ordnung, auf den Vorlagennamen ohne den Parameter zu verweisen? Funktioniert es unten nur, weil es inline erklärt wird, dass Compiler T annimmt?C++ - Vorlagenname ohne Template-Parameter
template <class T>
class ObjArray : public BArray
{
public:
inline ObjArray() :
BArray(sizeof(T), NULL)
{
}
inline ObjArray(const ObjArray& src) :
BArray(sizeof(T), NULL)
{
copyFrom((ObjArray&)src);
}
inline ObjArray(ObjArray& src) :
BArray(sizeof(T), NULL)
{
copyFrom(src);
}
...
};
Es ist OK innerhalb der Klassendefinition. – juanchopanza
Ein Klassenname ist innerhalb seiner eigenen Definition sichtbar. Dies wird "Klassennamen-Injektion" genannt. Bei Klassenvorlagen wird der Vorlagenname, wenn keine Vorlagenargumente folgen, als Name der eingefügten Klasse betrachtet. Also ja, es ist in Ordnung, nur "ObjArray" innerhalb der Definition von "ObjArray" zu verwenden. –