gpt4 book ai didi

C++多态构造函数错误;标识符未定义

转载 作者:行者123 更新时间:2023-11-30 03:31:48 27 4
gpt4 key购买 nike

因此,我试图在战舰程序的开头实现多态性,但当我尝试调用基类构造函数时,我不断收到智能感知错误,告诉我其中一个标识符未定义。

这是基类 Ship.h 的代码:

#ifndef SHIP_H
#define SHIP_H
#include <iostream>

class Ship
{
public:
Ship(int, int);
void setX(int);
int getX() const;
void setY(int);
int getY() const;
private:
int x;
int y;
};


#endif

这是它的构造函数

#include "Ship.h"

using namespace std;

Ship::Ship(int userX, int userY)
{
setX(userX);
setY(userY);
}

派生类头:

#ifndef FRIGATE_H
#define FRIGATE_H

#include "Ship.h"

class Frigate : public Ship {
public:
Frigate(int);
void placeShip();
void setLength(int);
int getLength() const;
private:
int length;
};

#endif

它的构造函数

#include <iostream>
#include "Frigate.h"

using namespace std;

Frigate::Frigate(int specLength) : Ship(userX, userY)
{
setLength(specLength);
}

当我尝试调用此处的 ship 构造函数时,我一直收到错误,提示标识符 userXuserY 未定义,但我在构造函数中为基类。我做错了什么?

最佳答案

您的基类构造函数有两个参数。您的派生类构造函数只接受一个参数。当调用派生类的构造函数时,它会调用基类构造函数但是你需要给他它需要的2个值...

我认为你的 Frigate 类的构造函数应该是这样的

Frigate::Frigate(int userX, int userY, int specLength) : Ship(userX, userY), length(specLength)
{
}

关于C++多态构造函数错误;标识符未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43922838/

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