gpt4 book ai didi

c++ - 为什么不递增? (构造函数)

转载 作者:行者123 更新时间:2023-11-30 01:03:37 26 4
gpt4 key购买 nike

创建了一个名为“Fahrzeug”的类,其中包含成员变量p_iIDp_iMaxID。现在,我主要创建了一些“Fahrzeug”类型的对象。目标是每个创建的对象都有其唯一的 ID,我试图通过递增来实现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;
}

ma​​in.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;
}

最佳答案

你需要让你的变量静态:

static int p_iMaxID = 0;

这样您的所有对象都共享p_iMaxID。您还需要在某处增加它

p_iMaxID++;

关于c++ - 为什么不递增? (构造函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52839064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com