gpt4 book ai didi

c++ - 类和结构,没有默认构造函数

转载 作者:行者123 更新时间:2023-11-28 02:08:21 34 4
gpt4 key购买 nike

我正在尝试构建一个链表,其元素属于我自己指定的类型。现在我不想撒谎,我在 C++ 中没有太多的 OOP 经验,但我遇到了一个错误。

我的链表:

#include "Vehicle.h"
#include "string"
using namespace std;

class LinkedList
{
private:
struct Node
{
Vehicle data;
Node* next;
};

Node* root;
int noofitems;

public:
LinkedList();
int getNoOfItems();
Vehicle getItemByIndex(int index);
void addItem(Vehicle itemIn);
void deleteItem();
void insertItem(Vehicle itemIn);
~LinkedList();
};

构造函数和 addItem()

LinkedList::LinkedList() : root(NULL), noofitems(0) {}

void LinkedList::addItem(Vehicle itemIn)
{
Node* temp;
temp = new Node();
temp->data = itemIn;
temp->next = this->root;
this->root = temp;
}

我的编译器给我这个错误: 错误 C2512:“LinkedList::Node”:没有合适的默认构造函数可用。现在我已经尝试为该结构提供一个构造函数,如下所示:

struct Node
{
Vehicle data;
Node* next;
Node() : next(NULL) {}
};

但随后我在旧错误之上得到了一个新错误:IntelliSense: 类“Vehicle”不存在默认构造函数。构造函数这个词开始看起来不对了,我真的很沮丧。提前致谢。

顺便说一句,如果需要车辆类别的详细信息:

class Vehicle
{

protected:
string make;
string model;
string regNo;
int engineSize;
bool rented;

public:
Vehicle(string makeIn, string modelIn, string regNoIn, int engineSizeIn);
string getMakeModel(); // return two values concatinated
string getRegNo();
int getEngineSize();
bool getRented();
void setRented(bool rentedIn);
~Vehicle();
};

Vehicle::Vehicle(string makeIn, string modelIn, string regNoIn, int engineSizeIn) :
make(makeIn), model(modelIn), regNo(regNoIn), engineSize(engineSizeIn),
rented(false)
{}

string Vehicle::getMakeModel()
{
return make + " " + model;
}

string Vehicle::getRegNo()
{
return regNo;
}

int Vehicle::getEngineSize()
{
return engineSize;
}

bool Vehicle::getRented()
{
return rented;
}

void Vehicle::setRented(bool rentedIn)
{
rented = rentedIn;
}

Vehicle::~Vehicle(){}

最佳答案

Node 有一个类型为 Vehicle 的成员。由于您不能默认构造 Vehicle,因此 Node 的默认构造函数被标记为已删除。您将需要提供自己的默认构造函数,该构造函数将 Vehicle 成员构造为某种状态,例如

struct Node
{
Vehicle data;
Node* next;
Node() : data("", "", "", 0), next(nullptr) {}
};

或者为 Vehicle 提供默认构造函数,例如

class Vehicle
{
//...
public:
Vehicle() = default;
//...
};

关于c++ - 类和结构,没有默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36606540/

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