Ist es erforderlich, die Initialisierungsliste in einer Header-Datei zu definieren?
Kürzlich erstellte ich Klasse Square
:
=========header-Datei======
class Square
{
int m_row;
int m_col;
public:
Square(int row, int col): m_row(row), m_col(col)
};
==========cpp-Datei======
#include "Square.h"
Square::Square(int row, int col)
{
cout << "TEST";
}
aber dann bekomme ich viele Fehler. Wenn ich entfernen Sie die cpp-Datei, und ändern Sie die header-Datei:
=========header-Datei======
class Square
{
int m_row;
int m_col;
public:
Square(int row, int col): m_row(row), m_col(col) {};
};
erfüllt es keine Fehler. Bedeutet es, dass die Initialisierung der Liste erscheinen müssen in der header-Datei?
InformationsquelleAutor der Frage E235 | 2013-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
==============header-Datei ================
==================cpp ====================
InformationsquelleAutor der Antwort uba
Initialisierung Liste ist Teil des Konstruktors definitionso dass Sie brauchen, um zu definieren, es an der gleichen Stelle, die Sie definieren-Konstruktor Körper.
Dies bedeutet, dass Sie können es entweder in der header-Datei:
oder in .cpp-Datei:
aber wenn Sie definition .cpp-Datei, die dann in einer header-Datei, es sollte nur seine Erklärung:
InformationsquelleAutor der Antwort LihO
Die Initialisierung der Liste angezeigt wird, mit der Konstruktor-definition, nicht mit einer Erklärung, dass nicht eine definition. Also deine Optionen sind entweder:
in der definition der Klasse, oder anders:
in der definition der Klasse, und:
anderswo. "Anderswo" ist, darf im header, wenn Sie es
inline
.InformationsquelleAutor der Antwort Steve Jessop
Nicht erforderlich. Es kann umgesetzt werden in eine source-Datei als auch.
InformationsquelleAutor der Antwort Mahesh
Diese Art der Initialisierung einer variable namens member-Initialisierungs-Liste. Member-Initialisierungs-Liste kann verwendet werden, in einer header-Datei oder source Datei. Das spielt keine Rolle. Aber der Konstruktor muss definition, wenn Sie Sie initialisieren in der header-Datei. Sie können sich C++ - Member-Initialisierungs-Liste für mehr details.
InformationsquelleAutor der Antwort Arul Kumar