gpt4 book ai didi

c++ - 重载类型转换运算符的语法

转载 作者:行者123 更新时间:2023-11-28 06:58:41 24 4
gpt4 key购买 nike

如果有人问过这个问题,我很抱歉,但我仍在学习 C++ 并且在语法上苦苦挣扎。

我应该重载类型转换运算符,以便它接受一个对象并返回一个基于该对象内部 protected int 的 int 值。

头文件:

definitions.h

class Baseballs
{
protected:
int currentValue;
public:
Baseballs(int);
int operator= (Baseballs&); // ??????
}

方法:

methods.cpp

#include "definitions.h"

Baseballs::Baseballs(int value)
{
currentValue = value;
}

int Baseballs::operator=(Baseballs &obj) // ??????
{
int temp = obj.currentValue;
return temp;
}

所以在 main.cpp 中,如果我创建一个对象:

Baseballs order(500);

然后将 500 分配给 currentValue。我需要能够将其分配给一个 int 变量,并最终打印它以进行验证,例如:

int n = order;
cout << n;

我遇到的问题是重载 = 的语法。谁能告诉我定义和方法的正确语法应该是什么?

最佳答案

重载的=实际上是分配给相同类型的对象。例如:

order = another_order;

您正在寻找的是重载的转换 运算符。

operator int() { return currentvalue; }

然而,由于未知的转换,这通常不被视为良好做法。 显式重载更安全:

explicit operator int() {...}

但是你需要这样做:

int n = static_cast<int>(order);

关于c++ - 重载类型转换运算符的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22826215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com