将C++代码手工移植为JAVA代码 是不是纯扯淡?该怎么处理

将C++代码手工移植为JAVA代码 是不是纯扯淡?我现在手头有一份基于MFC架构的C++项目。目标是:把部分功能代码

将C++代码手工移植为JAVA代码 是不是纯扯淡?
我现在手头有一份基于MFC架构的C++项目。

目标是:把部分功能代码移植到安卓上。

目前进展:

注:非指针类型的数据的迁移十分简单,不赘述。

  1.    struct 类型内成员变量指针。

[html] view plaincopy
<span style="font-family: Arial, Helvetica, sans-serif;">例子:struct Node</span>  
[html] view plaincopy
{         
    /// it seems that the member order should be placed according to access frequency  
 NLinkFlowType  m_nCap[NeighborhoodSize];                 
  
    TLinkFlowType   m_tCap; // if m_tCap > 0, then residual capacity of edge source->node is m_tCap  
                // if m_tCap < 0, then residual capacity of edge node->sink is -m_tCap                                      
  
  
    unsigned int    m_ts;   /// time stamp  
    unsigned int    m_dist; /// distance to the terminal  
  
  
    unsigned int    m_parent : 4;  
 unsigned int       m_tree : 1; // 0 = source, 1 = sink (if parent!=PARENT_FREE)  
      
    unsigned int    m_isDumb: 1;    /// whether participating in the maxflow  
  
  
   <span style="color: rgb(255, 0, 0);"> Node*          m_next; // queue of active nodes   </span>              
  
  
    NLinkFlowType   m_nCapOld[3];    /// for recording the capacity in the modified residual graph                 
  
  
    NLinkFlowType   m_nCapSub[3];   /// for sub-division      
};  /// struct Node   
              方案:将struct类型转换为class类型。其中的C++的指针队列部分就忽略掉。
   2.    类中成员变量&函数中成员变量指针

               方案:转换为class类型。 

   3.    函数指针 

                例子:typedef bool (*ProgressCallback)( int numSoFar, void* callbackData );

                方案:目前无。求指教。



   4.    形式参数& 函数返回值

                例子: Node* GetNeib(Node* p, int e)
{
return (Node*)((char*)p + m_nodeShifts[e]);
}

                 方案: 转换为class类型。 

               
    5. void指针

                例子:

                

[html] view plaincopy
void* callbackData  
[html] view plaincopy
   GridGraph8::GridGraph8(int sizeX, int sizeY, ProgressCallback abortCallback, void* callbackData)  
                  : m_nodes(NULL),  
                         m_pAuxNodeInfo(NULL),   
                         m_threadsNum(1),   
                         m_abortCallback(abortCallback),  
                         m_callbackData(callbackData)  
{  
Allocate(sizeX, sizeY);   
}  

              方案:目前无。求指教。

               


我看网上有说JAVA中用JNI调用C++之类。但是我自己没有做过。不敢尝试,时间也不那么允许。好久没有给导师提交阶段进展报告了。 c++ java
[解决办法]
楼主这是个体力活啊, 哈哈。。。不是技术活。。。,以前我们有同事就干这个事情。。。

3.    函数指针 

                例子:typedef bool (*ProgressCallback)( int numSoFar, void* callbackData );

                方案:目前无。求指教。

函数指针你就用java的类继承, 利用多态机制来搞。

class A 
{
      实现一个函数
}

class B super A

, 然后声明个 B 的对象, 
[解决办法]
JNI也没法调MFC的,微软的东西..
不仅仅是技术活,更是体力活啊~~
[解决办法]
不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。