有my.hpp:
pm.test("Resultado deve retornar SUCESSO se o Driver de Passagem possuir Parametros", function () {
var jsonData = pm.response.json();
var DriverD = parseFloat(jsonData.idCons);
pm.expect(DriverD).not.toBe(null);});
pm.test("Resultado deve retornar SUCESSO 200 OK", function () {
pm.response.to.have.status(200);});
还有我的test1a.cpp:
#include <utility>
#ifndef ROBBINS_MONRO
#define ROBBINS_MONRO
template <class Func, class DetermSeq, class RandomV, class RNG>
std::pair<double,double> robbins_monro(const Func & h, double x_init, double alpha, const DetermSeq & epsilon, RandomV & U, RNG & G, long unsigned N){
for(int i=0; i<N; i++){
x_init-= epsilon(i+1)(h(x_init) - alpha + U(G));
}
return std::make_pair(x_init, h(x_init));
}
#endif
我遇到此错误:
错误:表达式不能用作函数
对于该行:
x_init- = epsilon(i + 1)(h(x_init)-alpha + U(G));
我不明白,因为所有术语都是双重的,而不是“函数”
答案 0 :(得分:1)
我假设您要在此处进行乘法,为此需要*
运算符:
x_init -= epsilon(i+1) * (h(x_init) - alpha + U(G));
// ^^^
您编写的表达式在常规代数中很有意义,但是在c ++中,第二个括号成为对epsilon(i+1)
结果的函数调用。由于此操作返回了unsigned long long
,因此它不是一个函数,因此您无法调用它。
此外,在此lambda中:
[] (long unsigned n) { return 1/(1+n); };
除非n
是0
,否则此函数将始终返回0
,因为您正在执行整数除法。相反,您可以执行以下操作:
[] (long unsigned n) { return 1. /(1+n); };