c++ - C++“类枚举”新手问题
问题描述
我开始学习用 C++ 编写代码(来自 VB.net),我需要一些enum class
使用帮助。
我从一个学习练习中完成了这个简单的代码(最初分为 header.h 和exercise.cpp,但我在这里把它们放在一起):
#include <iostream>
#include <string>
#define BEGIN_WITH(x) { \
auto &_ = x;
#define END_WITH() }
using namespace std;
enum class Gender { Male, Female };
struct PersonStruct {
string _Name;
string _SurName;
int _Age;
double _Heigth;
Gender _Gender; };
class Person { public:
string _Name{};
string _SurName{};
int _Age{};
double _Heigth{};
Gender _Gender{}; };
int ModifyPerson(Person& PassPersona, PersonStruct Attribute) {
PassPersona._Name = Attribute._Name;
PassPersona._SurName = Attribute._SurName;
PassPersona._Heigth = Attribute._Heigth;
PassPersona._Age = Attribute._Age;
PassPersona._Gender = Attribute._Gender;
return(0); }
int main() { Person TestingPerson;
BEGIN_WITH(TestingPerson)
_._Age = 23;
_._Gender = Gender::Male;
_._Heigth = 1.94;
_._Name = "John";
_._SurName = "Smith";
END_WITH()
cout << "Person attributes: " << endl;
cout << "Name: " << TestingPerson._Name << endl;
cout << "Surname: " << TestingPerson._SurName << endl;
cout << "Age: " << TestingPerson._Age << endl;
cout << "Gender: " << TestingPerson._Gender << endl;
cout << "Heigth: " << TestingPerson._Heigth << endl;
cout << endl;
ModifyPerson(TestingPerson, PersonStruct{ "Poca","Hontas",24,1.85,Gender::Female });
cout << "New Person attributes: " << endl;
cout << "Name: " << TestingPerson._Name << endl;
cout << "Surname: " << TestingPerson._SurName << endl;
cout << "Age: " << TestingPerson._Age << endl;
cout << "Gender: " << TestingPerson._Gender << endl;
cout << "Heigth: " << TestingPerson._Heigth << endl;
return(0); }
我已经制作了结构以便对所有Person
类参数进行分组。这样做我了解到 usingenum class
比class
. 但是当我切换到enum class
我的代码上提示的很多错误时。我已经解决了几乎所有问题,除了这个:
cout << "Gender: " << TestingPerson._Gender << endl;
错误代码 E0349“没有运算符“<<”与这些操作数匹配”
我四处搜寻,但找不到解决办法。在此先感谢您的时间!(应感谢对我的代码的任何建议或建议)
解决方案
<<
没有为类定义运算符,Gender
因为它是您自己的类。你需要超载它。更多信息在这里。
enum class Gender
{
male,
female
};
ostream& operator<< (ostream & os, const Gender & g)
{
switch(g)
{
case Gender::male: os << "Male"; return os;
case Gender::female: os << "Female"; return os;
}
return os;
};
推荐阅读
- javascript - 如何跟踪特定 div 下 HTML 元素的添加?
- reactjs - 错误 npm 运行设置“ERR!代码 ELIFECYCLE”
- php - 表单提交后如何重定向到主页并发送确认电子邮件
- jaws-screen-reader - IE 11 - 页面加载后焦点移动到不同计算机上的不同区域
- c# - 单击 UI 按钮时更改 GUI 按钮文本
- firebase - Chrome Extension + Firebase - 在后台调用firebase.database(),内容和弹出脚本等于每个新连接?
- android - 为drawLine和drawBitmap添加动画
- swift - 在 iOS 中获取基于流派的 Youtube 播放列表
- java - 以下java代码给出输出1 2 3。代码是如何执行的?
- php - 如何使用别名连接多个表