因此,我试图在战舰程序的开头实现多态性,但当我尝试调用基类构造函数时,我不断收到智能感知错误,告诉我其中一个标识符未定义。
这是基类 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 构造函数时,我一直收到错误,提示标识符 userX
和 userY
未定义,但我在构造函数中为基类。我做错了什么?
最佳答案
您的基类构造函数有两个参数。您的派生类构造函数只接受一个参数。当调用派生类的构造函数时,它会调用基类构造函数但是你需要给他它需要的2个值...
我认为你的 Frigate
类的构造函数应该是这样的
Frigate::Frigate(int userX, int userY, int specLength) : Ship(userX, userY), length(specLength)
{
}
关于C++多态构造函数错误;标识符未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43922838/