Почему оно не увеличивается?(Конструктор) - PullRequest
0 голосов
/ 16 октября 2018

Создан класс с именем "Fahrzeug", который содержит переменные-члены p_iID и p_iMaxID .Сейчас в основном я создаю несколько объектов типа «Фарзойг».Цель состоит в том, чтобы у каждого созданного объекта был свой уникальный идентификатор, которого я пытаюсь достичь, увеличивая p_iMaxID в конструкторе.Проблема не увеличивается.Открыта для любой помощи:)

Код:

Fahrzeug.h:

#pragma once
#include <iostream>
#include <string>
class Fahrzeug
{
public:
    Fahrzeug();
    Fahrzeug(std::string);
    ~Fahrzeug();

private:
    std::string p_sName;
    int p_iID;
    int p_iMaxID = 0;
    //Hochzählende Fahrzeugnummer
};

Fahrzeug.cpp:

#include "Fahrzeug.h"
using namespace std;

Fahrzeug::Fahrzeug()
{
    p_sName = " ";
    p_iID = p_iMaxID + 1;
    cout << "ID des erzeugten Objects: " << p_iID << ", Name des erzeugten Objects: (NIX)" << p_sName << endl;
}

Fahrzeug::Fahrzeug(std::string autoName)
{
    p_iID = p_iMaxID + 1;
    p_sName = autoName;
    cout << "ID des erzeugten Objects: " << p_iID << ", Name des erzeugten Objects: " << p_sName << endl;
}

Fahrzeug::~Fahrzeug()
{
    cout << "ID des gelöschten Objects: " << p_iID << ", Name des gelöschten Objects: " << p_sName << endl;
}

main.cpp:

#include "Fahrzeug.h"
using namespace std;

void vAufgabe_1()
{
    Fahrzeug auto1("Auto1");
    Fahrzeug auto2("Auto2");
    string sNameInput1, sNameInput2;
    cout << "Name fuer Auto3: " << endl;
    cin >> sNameInput1;
    Fahrzeug *auto3 = new Fahrzeug(sNameInput1);
    cout << "Name fuer auto4: " << endl;
    cin >> sNameInput2;
    Fahrzeug *auto4 = new Fahrzeug(sNameInput2);

    delete auto3;
    delete auto4;
}

int main()
{
    vAufgabe_1();
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Есть 2 причины, по которым он не работает

  • Вы на самом деле не увеличиваете p_iMaxID
  • Ваш «Fahrzeuge» не использует один и тот же p_iMaxID, так как он не является статическим
0 голосов
/ 16 октября 2018

Вам нужно сделать вашу переменную статической:

static int p_iMaxID = 0;

, чтобы все ваши объекты разделяли p_iMaxID.Вам также нужно будет увеличить его где-нибудь

p_iMaxID++;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...