如果已经提出这个问题,我很抱歉,但我还在学习C ++并且正在努力学习一些语法。
我应该重载类型转换运算符,以便它接受一个对象并根据该对象内的受保护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;
我遇到的问题是重载=
的语法。有人能告诉我定义和方法的正确语法应该是什么?
答案 0 :(得分:1)
重载的=
实际上是分配给相同类型的对象。例如:
order = another_order;
您正在寻找的是一个重载转换运算符。
operator int() { return currentvalue; }
然而,由于转换未知,这通常不被视为良好做法。 explicit
重载更加安全:
explicit operator int() {...}
但是你需要这样做:
int n = static_cast<int>(order);