簡體   English   中英

在用戶定義的類中使用Symbolic C ++

[英]Using Symbolic C++ in user-defined classes

我想同時進行符號和數值操作時有一個函數。 即,在某些點上取導數並評估函數。 我認為,也許做錯了,最好的方法通常是讓用戶定義的類具有兩個成員函數:一個提供派生函數(所有符號c ++都是私有的),另一個提供替換和提供參數值和變量值時,吐出函數值。

但是,在構造私有類成員位中的符號位時遇到了一些麻煩:

class fitFunction {
    Symbolic t("t"), A("A"), B("B");
    float p1, p2, time;
    Symbolic fn= A*(1-exp(-B*t));
public:
    fitFunction(vector<float> &, float );
    float evaluate() {
        return fn[A == p1, B == p2, t == time];
    }

};

fitFunction::fitFunction (vector<float>  & pars, float tt) {
p1 = pars[0];
p2 = pars[1];
time = tt;
}

我使用了比較草率的“ tt”定義,以避免與符號版本發生沖突,但是我得到的主要錯誤是:“在字符串常量之前的預期標識符”,帶有指向“ t”的符號定義的箭頭,以及所有其他符號也一樣 顯然,由於未正確聲明這些內容,因此其他所有內容都會消失。

可能需要指出符號定義,並且在main()中可以很好地進行操作。

謝謝!

您需要在構造函數中初始化類成員。 您無法像嘗試那樣直接對其進行初始化。 沒有這樣做的語法。 因此,您嘗試這樣做是語法錯誤。

嘗試使用以下成員聲明:

Symbolic t, A, B;
float p1, p2, time;
Symbolic fn;

然后,使用構造函數中的初始化器列表初始化它們:

fitFunction::fitFunction(vector<float> & pars, float tt)
    : t("t"),
      A("A"),
      B("B"),
      p1(pars[0]),
      p2(pars[1]),
      time(tt),
      fn(A * (1 - exp(-B * t)))
{
}

暫無
暫無

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

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