首页 > 解决方案 > C++ 枚举作为构造函数参数

问题描述

您好,我已经好几年没有使用 C++了,所以我有点生疏,无法弄清楚!

我有这个代码 | 人.h

#ifndef PERSON_H
#define PERSON_H

#include<string>

class Person {
    private:
        std::string fName, lName;
        int age;
        enum professionEnum {
            Barber,
            Developer,
            Marketer
        } profession;

    public:
        Person();
        Person(std::string fName, std::string lName, int profession);
        void setFName(std::string fName);
        void print();

};

#endif

一个简单的人类。

我想要做的是让我的构造函数 Person() 取一个 int,例如:

Person me = Person("me", "meow", 0); // This should assign "me" to Barber, enum index is 0.

这是我到目前为止尝试过的(所有错误):

this->profession = professionEnum::profession;
this->profession = 0;
this->profession = professionEnum(profession);

这是完整的 person.cpp 代码

#include "person.h"

#include <iostream>

Person::Person() {
    this->age = 18;
    this->fName = "Default";
    this->lName = "Default";
}

Person::Person(std::string fName, std::string lName, int profession) {
    this->fName = fName;
    this->lName = lName;
    this->profession = professionEnum::profession;
    this->profession = 0;
    this->profession = professionEnum(profession);
}

void Person::print() {
    std::cout << "Age : " << this->age << ", FName : " << this->fName << ", LName : " << this->lName << std::endl;
}

谢谢你的帮助

PS:如果您发现任何不良做法/不良代码,请告诉我。

标签: c++classoopenums

解决方案


推荐阅读