繁体   English   中英

如何将Python转换为C ++?

[英]How to convert Python to C++?

我正在尝试运行用C ++编写的代码,该代码应与我在Python中编写的代码相同。 他们俩都使用Fenics。

我的问题是我无法将Python类转换为C ++类。

例如,我的Python代码是:

V = VectorFunctionSpace(mesh, "Lagrange", 1)
u = Function(V)
En = 5*dx - dot(3, u)*ds(2)

def f(self, x):
    u.vector()[:] = x
    return assemble(En)

这里的问题是编译器找不到En,因为在类内部未定义En。

我的C ++代码:

double f(const GenericVector& x)
{
     u.vector() = x;
     return assemble(F);
}

int main()
{
   //...things that apparently work...
   Function u(Vh);
   MyClass::BilinearForm F;

}

我该如何解决?

C ++具有全局变量,就像Python具有全局变量一样。

如果要访问在类外部定义的内容,可以在其MyClass::Thingy加上类名称并使其静态( MyClass::Thingy ),使其成为全局MyClass::Thingy ,为它提供访问器函数( MyInstance.GetThingy() ),或将其传递给它。直接作为使用它的函数的参数。

作为许多方法之一,您可以尝试将F定义为全局变量,如下所示:

...

MyClass::BilinearForm F; // The global scope

double f(const GenericVector& x)
{
     u.vector() = x;
     return assemble(F);
}

int main()
{
   //...things that apparently work...
   Function u(Vh);
   // you can use F here or call the function f
    ...

}

F是全局变量,您可以在此范围内的任何方法中使用它。 我不知道您的类是如何定义的,或者您是否使用自定义名称空间,但是如果BilinearForm是此处的可访问类,您可能会基于实现摆脱作用域解析(MyClass::)部分。 您也可以将F定义为static变量,因此,如果您可以提供更多详细信息,我相信您可能会获得更精确的反馈。

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM