Ich habe gründlich nach einer Antwort ohne Erfolg gesucht. Ich habe angefangen mit C++ - Gaddis-Lehrbuch als Referenz anzufangen. Ich weiß, dass es eine einfache Antwort auf dieses Problem gibt, aber ich habe Probleme, es herauszufinden. Hier ist mein Code:Keine Ausgabe mit einem Rückgabefehler von 1 bei der Verwendung von Zeigern auf char in C++
class Employee
{
private:
char *name;
int idNumber;
char *department;
char *position;
void initName(const char *n)
{
name = new char[strlen(n) + 1];
strcpy(name, n);
}
void initDepartment(char *d)
{
department = new char[strlen(d) + 1];
strcpy(department, d);
}
void initPosition(char *p)
{
position = new char[strlen(p) + 1];
strcpy(position, p);
}
public:
Employee()
{
strcpy(name, "");
idNumber = 0;
strcpy(department, "");
strcpy(position, "");
}
Employee(char *nam, int num, char *dep, char *posit)
{
initName(nam);
idNumber = num;
initDepartment(dep);
initPosition(posit);
}
Employee(const char *nam, int num)
{
initName(nam);
idNumber = num;
strcpy(department, "");
strcpy(position, "");
}
~Employee()
{
delete [] name;
delete [] department;
delete [] position;
}
void setName(char *n)
{
name = new char[strlen(n) + 1];
strcpy(name, n);
}
void setIdNumber(int num)
{
idNumber = num;
}
void setDepartment(char *d)
{
department = new char[strlen(d) + 1];
strcpy(department, d);
}
void setPosition(char *p)
{
position = new char[strlen(p) + 1];
strcpy(position, p);
}
const char * getName() const
{
return name;
}
int getIdNumber() const
{
return idNumber;
}
const char * getDepartment() const
{
return department;
}
const char * getPosition() const
{
return position;
}
};
int main(int argc, char** argv)
{
const int SIZE = 50;
const char name[SIZE] = "Mark Jones";
Employee employee(name, 3452);
const char *ptr = NULL;
ptr = employee.getName();
cout << ptr << endl;
return 0;
}
Was ist das Problem, Mann? Welchen Fehler bekommst du? Auf welcher Linie? BTW, diese 'strcpy (department," ");' und ähnliche Zeilen sehen extrem seltsam aus, du solltest 'memset' verwenden, um den Inhalt von' department' zu löschen. – ForceBru
Mit einem Zeiger, standardmäßig (ignoriere, dass er initialisiert werden könnte) mit Müll), zeigt nichts an. Etwas muss instanziiert werden, auf das der Zeiger zeigen kann - also können Sie etwas zuweisen, das nicht instanziiert wurde? Sehen Sie sich die Zeichenfolgen genau an und wie Sie sie im Konstruktor behandeln. – Nim
@Nim, ein C++ Zeiger zeigt immer irgendwo hin. Es kann auf Null zeigen oder auf etwas zeigen, auf das Ihr Programm nicht zugreifen darf, aber es zeigt immer irgendwo hin. – nicomp