私はまだポインタをつかむ過程にあり、そうすることで、ポインタエラーの発見を練習するために素早く意味のないプログラムが書かれています。私は、このサンプルコードがクラッシュする理由として困惑している:ポインタを習得しようとするとクラッシュする練習プログラム
#include <iostream>
class VehiclePart
{
public:
VehiclePart(int);
int GetVehiclePartNumber();
private:
int partNumber;
};
VehiclePart::VehiclePart(int VehiclePartNumber)
{
partNumber = VehiclePartNumber;
}
int VehiclePart::GetVehiclePartNumber()
{
return partNumber;
}
class Vehicle
{
public:
Vehicle(VehiclePart* VehiclePart, int VehiclePartNumber);
int GetVehiclePartNumber();
private:
VehiclePart* vehiclePart;
};
Vehicle::Vehicle(VehiclePart* vehiclePart, int VehiclePartNumber)
{
vehiclePart = new VehiclePart(VehiclePartNumber);
}
int Vehicle::GetVehiclePartNumber()
{
return vehiclePart->GetVehiclePartNumber();
}
int main()
{
VehiclePart* hood = nullptr;
Vehicle car(hood, 6);
std::cout << "Hello" << std::endl;
std::cout << car.GetVehiclePartNumber();
return 0;
}
私は私は私がポインタと、なぜクラッシュが発生したに慣れるために、これはちょうど練習されたように、物事について移動するより良い方法があることを知っています。どんな助けもありがとうございます。
コンストラクタからnewを呼び出す予定がある場合、コンストラクタは 'VehiclePart *'をとりますか? – user2296177
変数名(先頭文字)を大文字にしない、メンバー変数にアンダースコアを使用するなど、適切な命名規則に従ってコードを読みやすくする必要があります(vehiclePart_ –