【发布时间】:2017-10-10 21:28:02
【问题描述】:
所以我试图在战舰程序的开头实现多态性,但是当我尝试调用基类构造函数时,我不断收到一个智能感知错误,告诉我其中一个标识符未定义。
这是基类 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 未定义,但我在基类的构造函数中定义了它们。我做错了什么?
【问题讨论】:
-
在
Frigate初始化程序中,您将未定义的变量userX和userY传递给基类构造函数,并且您的编译器正确地告诉您它不知道这些变量。
标签: c++ inheritance constructor polymorphism