簡體   English   中英

如何聲明操作符/重載函數來操作const變量和非const變量?

[英]How to declare operator/ overload function to operate on a const variable and a non-const variable?

我有以下代碼

#pragma once

#include "material.h"
#include "../Math/vector.h"
#include <cmath>

class LambertianMaterial : public Material
{
public:
    LambertianMaterial(Vector rho);
    Vector brdf(Vector wi) const
    {
        return mRho / M_PI; // Error here
    }

private:
    Vector mRho;
};

在對應於brdf的return語句的行中,我收到以下錯誤

Invalid operands to binary expression ('const Vector' and 'double')

在類向量中,我已經聲明了operator/ like

Vector operator/(const float a);

我正在考慮重新定義方法

friend Vector operator/(const Vector& v, const float& a);

這是一個很好的方法,還是有一種方法,以便運算符的當前定義考慮const Vector案例?

你可以使它成為const成員函數,如果它不會(並且它不應該)修改任何非靜態成員變量,它可以應用於const和非const對象。

Vector operator/(const float a) const;

正如您所想,使其成為非成員函數(並在必要時聲明為朋友)也可以完成工作。 IMO我更喜歡operator/ 請參閱運算符重載:成員函數與非成員函數? 了解更多信息。

暫無
暫無

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

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