C++ 枚举为返回值的类成员函数
我遇到以下问题: 我需要使用enum枚举4个继承类(此时它们与enum没有区别),然后通过一个名为“whoAmI”的虚拟函数返回类型,我不理解如何执行返回部分的语法 以下是相关代码 在课堂上C++ 枚举为返回值的类成员函数,c++,enums,return,C++,Enums,Return,我遇到以下问题: 我需要使用enum枚举4个继承类(此时它们与enum没有区别),然后通过一个名为“whoAmI”的虚拟函数返回类型,我不理解如何执行返回部分的语法 以下是相关代码 在课堂上 virtual void whoAmI(); enum gettype { easyTile, cropTile, waterTile, mediumTile}; in class.cpp void tile::whoAmI() { } 您可以将函数的返回类型更改为enum的名称,然后使用=0声
virtual void whoAmI();
enum gettype { easyTile, cropTile, waterTile, mediumTile};
in class.cpp
void tile::whoAmI()
{
}
您可以将函数的返回类型更改为
enum
的名称,然后使用=0
声明基类是纯虚拟的
class ITile
{
public:
enum class EType { easy, crop, water, medium };
virtual EType whoAmI() const = 0;
};
例如,派生类可以重写此方法以返回正确的enum
类型
class EasyTile : public ITile
{
public:
EasyTile() = default;
EType whoAmI() const override { return EType::easy; }
};
class CropTile : public ITile
{
public:
CropTile() = default;
EType whoAmI() const override { return EType::crop; }
};
例如()
您可以轻松地这样做:
class TileBase
{
public:
enum Type { easyTile, cropTile, waterTile, mediumTile };
virtual Type whoAmI() const = 0;
virtual ~TileBase() = default;
};
class EasyTile : public TileBase
{
Type whoAmI() const override { return easyTile; }
};
您知道,您需要将枚举类型
指定为返回类型,而不是void
#包括
#include <iostream>
using namespace std;
class Tile{
public:
enum getType { easyTile, cropTile, waterTile, mediumTile};
virtual getType whoAmI(){}
};
class easyTile:public Tile{
public:
getType whoAmI(){return getType::easyTile;}
};
class cropTile: public Tile{
public:
virtual getType whoAmI(){return getType::cropTile;}
};
class waterTile: public Tile{
public:
virtual getType whoAmI(){return getType::waterTile;}
};
class mediumTile: public Tile{
public:
virtual getType whoAmI(){ return getType::mediumTile;}
};
int main() {
Tile *T = new cropTile;
cout << T->whoAmI() << endl;
delete T;
return 0;
}
使用名称空间std;
类瓷砖{
公众:
枚举getType{easyTile,cropTile,waterTile,mediumTile};
虚拟getType whoAmI(){}
};
类easyTile:公共瓷砖{
公众:
getType whoAmI(){return getType::easyTile;}
};
类别:公共瓷砖{
公众:
虚拟getType whoAmI(){return getType::cropTile;}
};
类别:公共瓷砖{
公众:
虚拟getType whoAmI(){return getType::waterTile;}
};
类别mediumTile:公共Tile{
公众:
虚拟getType whoAmI(){return getType::mediumTile;}
};
int main(){
瓷砖*T=新的十字线;
CUTHOMII:(更改代码<空VI/S> >代码> GETType < /Cord>?这是基本C++ +代码> GETType WHOMAIE()/CUT>。我建议你拿起一个并读它。BTW:“GETType”是一个非常奇怪的名词(甚至用英语)。人们会期待一些类似“Tielype”的东西。非常感谢你的大意和切题答案。
class TileBase
{
public:
enum Type { easyTile, cropTile, waterTile, mediumTile };
virtual Type whoAmI() const = 0;
virtual ~TileBase() = default;
};
class EasyTile : public TileBase
{
Type whoAmI() const override { return easyTile; }
};
#include <iostream>
using namespace std;
class Tile{
public:
enum getType { easyTile, cropTile, waterTile, mediumTile};
virtual getType whoAmI(){}
};
class easyTile:public Tile{
public:
getType whoAmI(){return getType::easyTile;}
};
class cropTile: public Tile{
public:
virtual getType whoAmI(){return getType::cropTile;}
};
class waterTile: public Tile{
public:
virtual getType whoAmI(){return getType::waterTile;}
};
class mediumTile: public Tile{
public:
virtual getType whoAmI(){ return getType::mediumTile;}
};
int main() {
Tile *T = new cropTile;
cout << T->whoAmI() << endl;
delete T;
return 0;
}