簡體   English   中英

重載類型轉換運算符的語法

[英]Syntax for Overloading Type Conversion Operator

很抱歉,是否已經有人問過這個問題,但是我仍在學習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;

我遇到的麻煩是重載=的語法。 有人可以告訴我定義和方法的正確語法是什么嗎?

重載=實際上是分配給相同類型的對象。 例如:

order = another_order;

您正在尋找的是重載的轉換運算符。

operator int() { return currentvalue; }

但是,由於轉換次數未知,因此通常不將其視為良好做法。 explicit重載要安全得多:

explicit operator int() {...}

但是,您需要執行以下操作:

int n = static_cast<int>(order);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM