如何将对象类型转换为 int c++

Posted

技术标签:

【中文标题】如何将对象类型转换为 int c++【英文标题】:how to convert object type to int c++ 【发布时间】:2021-04-06 08:52:09 【问题描述】:

我正在尝试使用两个类创建一种记录列表。一个类用于输入值,而另一个类用于收集、组织和打印它们。这是我的代码:

   class enterrecords

public:
    string name;
    int age;
    string birthmonth;

    enterrecords() 
    
        name = "";
        age = 0;
        birthmonth = "";
    
    enterrecords(string n, int a, string b) 
    
        name = n;
        age = a;
        birthmonth = b;
    

;
class records 

public:
    vector <enterrecords> list;
    records() 
    

    
    records(enterrecords s) 
    

    
    void addtolist(const enterrecords s)
    
        this->list.push_back(s);
    
    void print()
    
        for (const auto& it : this->list)
        
            cout << it.name << " " << it.age << " " << it.birthmonth << endl;
        
    
;

int main() 

    enterrecords s1;
    enterrecords s2;
    enterrecords s3;
    records c1;
    s1 = enterrecords("john", 21, "jan");
    s2 = enterrecords("male", 25, "feb");
    s3 = enterrecords("rob", 23, "oct");
    c1.addtolist(s1);
    c1.addtolist(s2);
    c1.addtolist(s3);
    c1.print();

这是这个程序的输出:

约翰 1 月 21 日

男性 2 月 25 日

10 月 23 日抢劫

最后,我希望能够按年龄从最小到最大组织这个列表。所以在重新排列它们之后,这就是它的样子:

约翰 1 月 21 日

10 月 23 日抢劫

男性 2 月 25 日

我尝试按常规对它们进行排序,但问题是,“21”、“23”和“25”不是 int 值而是对象值。有什么方法可以将它们转换为 int 以便我可以进行一些操作并对它们进行排序?谢谢。

【问题讨论】:

不确定您所说的“对象值”是什么意思。 enterrecords::age 是一个整数。要按年龄对向量进行排序,请将std::sort 与接受两个enterrecords 对象的引用的比较器一起使用,如果第一个年龄小于第二个,则返回true。 谢谢先生,有什么办法可以通过代码来证明吗? 【参考方案1】:

std::sort 通常用于对一系列对象进行排序。要么该类具有自然顺序,然后您为它创建一个 operator

示例基于您的代码(未编译/测试),不考虑月份,因为您使示例变得更加困难:

std::sort(c1.list.begin(), c1.list.end(), [](const auto& r1, const auto& r2)  return r1.age < r2.age; );

【讨论】:

所以如果我使用它,它会重新排列列表本身,或者它只会说 r1.age 排序函数使用比较器对列表进行排序。如果 r1 小于 r2,比较器需要返回 true,否则返回 false。 查看链接的 std::sort 页面了解更多信息。

以上是关于如何将对象类型转换为 int c++的主要内容,如果未能解决你的问题,请参考以下文章

C++ string如何转换为BSTR类型

C++类型转换函数

C++中如何将一个字符串(string类型的)映射(转换)到枚举值(enum)

c++中如何把string类型转化为float类型

c++ 如何将string 转成 enum 类型,enum 转成 string类型,

如何在 Cython 中将 Python 对象转换为 C++ 类型