C++:extern "C" 和类成员之间的命名空间冲突

5
我遇到了一个相当奇特的C++命名空间问题:
简化示例:
 extern "C" {
 void solve(lprec * lp);
 }

 class A {
 public:
    lprec * lp;
    void solve(int foo);
 }

 void A::solve(int foo)
 {
     solve(lp);
 }

我想在我的C++成员函数A::solve中调用C函数solve。编译器对我的意图不满意:
  error C2664: 'lp_solve_ilp::solve' : cannot convert parameter 1 from 'lprec *' to 'int'

有什么东西可以在solve函数前加上吗?C :: solve不起作用。
4个回答

9

要调用全局命名空间中的函数,请使用:

::solve(lp);

无论函数是否为extern "C",都需要这样做。

2
C函数在全局命名空间中,因此尝试使用以下方法:

::solve(lp)

1
请尝试使用::solve

1

只需使用::solve(lp)。请注意,在类声明后面还需要加上分号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接