所以我試圖在一個戰艦程序的開始實現多態性,但我不斷收到一個intellisense錯誤,告訴我我的一個標識符是未定義的,當我嘗試調用基類構造函數時。C++多態構造函數錯誤;標識符是undefined
這裏是基類的代碼,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);
}
當我嘗試打電話給這裏的船舶構造函數時,我不斷收到一個錯誤,該錯誤提示標識符userX
和userY
未定義,但我在基類的構造函數中定義了它們。我做錯了什麼?
在'Frigate'初始化程序中,您將未定義的變量'userX'和'userY'傳遞給基類構造函數,並且編譯器正確地告訴您它不知道這些變量。 –