- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题与数字食谱有关。我有一个全局函数,它计算要最小化的函数 vector
VecDoub vecfunc(VecDoub_I x) {
// code is here
}
在类函数 run 中,我尝试调用 Numerical Recipes 函数 newt,它读取我的函数 vecfunc,如图所示,
class A {
void run() {
VecDoub_IO pt;
pt.resize(2);
pt[0] = 0.5;
pt[1] = 0.5;
bool check = false;
newt<VecDoub>(pt, check, &vecfunc);
}
}
函数 newt 声明为
template <class T>
void newt(VecDoub_IO &x, Bool &check, T &vecfunc)
为什么会出现以下编译器错误?
error C2664: 'newt' : cannot convert parameter 3 from 'VecDoub (__cdecl *)(VecDoub_I)' to 'VecDoub &'
最佳答案
在通话中newt
您明确指定 T
是VecDoub
(您指定了 newt<VecDoub>
)但是您将函数的地址传递给它,因此编译器无法将您的函数转换为 VecDoub&
.如果你想要 VecDoub&
在 newt
然后调用vectfunc
并将其存储在临时变量中,然后将该变量传递给函数(因为在 newt
中,最后一个参数是对 T
的引用)但是如果您确实需要 newt
中的函数那你为什么写newt<VecDoub>(pt, check, &vecfunc)
虽然你可以写 newt(pt, check, &vecfunc)
让 C++ 为你推断类型?除此之外,为了在 newt
中接收函数不要通过引用获取它们,而是通过值获取它们,所以 newt
应声明为:
template <class T>
void newt(VecDoub_IO &x, Bool &check, T vecfunc)
因为函数通常是小对象或指针,所以这会起作用并且不会降低性能
关于c++ - 数字食谱 : How to pass function as argument of function newt in c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977823/
我需要一个简单的基于终端的窗口/小部件库,在 Linux 中具有 C 或 C++ 接口(interface)。我找到了 newt,它似乎足以满足我的需求,但我只有一个问题无法解决,谷歌也不是很有帮助:
我目前正在使用 JOGL OpenGL Java 端口,我需要使用 com.jogamp.newt.event.MouseEvent 我不知道怎么声明,我找到了this documentation但我
我一直在考虑使用 JOGL 来创建一些东西,并且一直在浏览我能找到的文档。 简短的教程他们都提到使用 JOGL 版本的 Canvas 可能会出现性能问题,而您应该使用 NEWT。然而,每个教程/常见问
我有一个使用 newt/snack 模块的 Python 程序,它在 Fedora 17 正式版中运行良好。 我需要将程序移植到initrd ram disk,即只运行initrd/vmlinuz但没
我正在尝试使用 newt 制作一个简单的 TUI。我已经安装了 newt-dev 包:apt-get install libnewt-dev 我相信它安装正确,因为如果我使用 gcc 和以下命令进行构
我的问题与数字食谱有关。我有一个全局函数,它计算要最小化的函数 vector VecDoub vecfunc(VecDoub_I x) { // code is here } 在类函数 run 中
我遇到了这个错误,它要求我传递 const char** 而不仅仅是 char**: client.c:34:33: warning: passing argument 5 of ‘newtEntry
我正在尝试在 Maven 项目中使用外部 jar JOGL 和 GlueGen。构建过程有效,但是当我执行 jar 时,我收到此错误消息: Exception in thread "main" jav
我是一名优秀的程序员,十分优秀!