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

时间:2014-04-03 01:31:37

标签: c++ operator-overloading

如果已经提出这个问题,我很抱歉,但我还在学习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;

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

1 个答案:

答案 0 :(得分:1)

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

order = another_order;

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

operator int() { return currentvalue; }

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

explicit operator int() {...}

但是你需要这样做:

int n = static_cast<int>(order);