Ich bin neu in C++ und das ist der Code, wo mein Zeiger Null wird, was mache ich falsch?Zeiger wird null C++
Hauptfunktion.
// in main() function
switch (UserView::RequestMainMenuOption()) {
case 1:
{
struct user_info *user; // the pointer in question.
if (UserController::Login(user) && user) { // shows null here
std::cout << user->username << std::endl; // this line does not execute.
-Controller.
bool UserController::Login(struct user_info *user)
{
//...
// std::cin username/password and validate in the user model.
if (User::ValidateCredentials(username, password, user)) {...}
}
Modell.
int User::ValidateCredentials(std::string username, std::string password, struct user_info *user)
{
// UserList is a vector of struct user_info that contains std::string username, password;
std::vector<user_info> UserList = User::GetUserList();
// index is searched for here based on credentials...
// address of the element in the user list is assigned to user.
user = &UserList.at(index);
// address is successfully assigned (tested)
// but when returning back to the first function call in the main() function, user is NULL.
Sie wahrscheinlich das Argument 'Login()' durch Verweis übergeben werden sollen. –
Sie übergeben "Benutzer", überall, nach Wert. Das bedeutet, dass das Setzen von "user" innerhalb dieser Funktion absolut keinen Effekt hat. Sie müssen "Benutzer" als Referenz anstelle von Wert übergeben. Überprüfen Sie das Material in Ihrem C++ - Buch, in dem es darum geht, Funktionsparameter nach Wert und nach Referenz zu übergeben. –
Sie deklarieren nur 'struct user_info * user;' und nicht allozieren, also ist es NULL, aber Sie haben Glück, denn wenn Sie nicht im Debug-Modus waren, könnte es Müll enthalten und Ihren Code als Müll –