2013-10-03 42 views
1

在用我的教授給我的.h文件中,他寫重載函數調用操作

double operator()(double x) const; 

過載的點在X改爲雙,並用它來評估存儲在類對象Term中的多項式。我在課堂實施中提出的是

double operator()(double x) const 
    { double result = 0.0; 
     for (int i = 0; i < getSize(); i++) 
      result += (getCoeff(i) * pow(x, getExponent(i))); 
     return result; 
    } 

如何從應用程序中調用它?我已經嘗試了不同的電話像

Polynomial p; 
    p.operator(x); 

Polynomial::operator(x); 

operator(x); 

但編譯時總是出現錯誤。

+0

稱之爲p(x) – Arun

+0

選中此項:http://www.learncpp.com/cpp-tutorial/99-overloading-the-parenthe sis-operator/ –

回答

4

通常的形式是調用它,就好像你的實例是一個功能:

double x = 3.1416; 
Polynomial p; 
double y = p(x); 

或者,您可以顯式調用操作:

double x = 3.1416; 
Polynomial p; 
double y = p.operator()(x); 

這裏有一個簡單的例子:

#include <iostream> 

struct Foo 
{ 
    double operator()(double x) const { return x*2; } 
}; 

int main() 
{ 
    Foo f; 
    std::cout << f(2.5) << std::endl; 
} 
+0

當使用p(x)時,我得到錯誤「預期的非限定id之前'('標記')。和p.operator()(x)給出了幾個錯誤。 – user2841264

+0

@ user2841264好吧,這是調用操作員的方式,所以你必須有另一個錯誤。顯然這假定你已經聲明瞭'x',並將其設置爲某個東西。 – juanchopanza

+0

@ user2841264 - 讀取錯誤是由哪一行造成的。不要以爲這是你修好的東西。 – ChiefTwoPencils