解析" cannot define member function ... within .."

Resolving a " cannot define member function ... within .."

本文关键字:function within member define cannot 解析      更新时间:2023-10-16

我已经为这个问题挣扎了一段时间,我想知道一种系统的方法来找出我为什么会出现这个错误。显然,我的解决方案中有多个组件。当我试图构建我的一个组件时,我遇到了这个错误。

error: cannot define member function 'ImageFramework::ACE_Main::run_i' within 'ImageFramework'

In file included from C:mingw64requiredACEACE_wrappers/ace/config-all.h:89:0,
from C:windows-libscorbaACE_wrappersTAOorbsvcs/orbsvcs/CosNamingC.h:37,
from C:UsersUserAdminTreeShellMainProcessSourceCodeExternalCommunicationCORBA/TCorbaClient.h:12,
from C:UsersUserAdminTreeShellMainProcessSourceCodeExternalCommunication/SystemCommunicator.h:23,
from C:UsersUserAdminTreeShellMainProcessSourceCodeApplicationManagerApplMngExternalComm.h:18,
from C:UsersUserAdminTreeShellMainProcessSourceCodeApplicationManagerApplMngMessageHandler.h:15,
from C:UsersUserAdminTreeShellMainProcessSourceCodeApplicationManagerApplMngMessageHandler.cpp:15:
C:mingw64requiredACEACE_wrappers/ace/OS_main.h:218:51: error: cannot define member function 'ImageFramework::ACE_Main::run_i' within 'ImageFramework'
inline int ACE_Main::run_i (int argc, char *argv[])  

有一点背景,该组件使用了一个名为ace的外部库,错误将我放在了一个ace源文件中(我很犹豫是否要触摸它,因为它不是我项目的一部分)。有点像这个

#       define main 
ace_main_i (int, char *[]); 
ACE_BEGIN_VERSIONED_NAMESPACE_DECL 
ACE_Export int ace_os_main_i (ACE_Main_Base&, int, char *[]); 
class ACE_Main : public ACE_Main_Base {int run_i (int, char *[]);}; 
inline int ACE_Main::run_i (int argc, char *argv[])  
{ 
return ace_main_i (argc, argv); 
} 
ACE_END_VERSIONED_NAMESPACE_DECL 
int 
ACE_MAIN (int argc, char *argv[]) /* user's entry point, e.g., wmain */ 
{ 
ACE_Main m; 
return m.run (argc, argv); /*ace_os_main_i (m, argc, argv);   what the user calls "main" */ 
} 
int 
ace_main_i
#     endif /* ACE_WIN32 && ACE_USES_WCHAR */
#   else /* ACE_HAS_WINCE */

无论如何,这里是我为上面提到的错误消息错误所做的尝试,所以

error: cannot define member function 'ImageFramework::ACE_Main::run_i' within 'ImageFramework'

我已经查看了ImagFramework类源.h.cpp,它们有多个包含文件。(此外,这个类充当了许多其他类的基类)来查看是否包含ace库头,但我找不到任何头。我希望就找出可能导致这一问题的原因的系统方法提出建议。我甚至可能误解了这个信息。我对这条消息的理解是,imageframework类中的方法或其基类中的方法可能会触发代码的上述部分。如果我错了,请纠正我?任何关于这个问题的建议和想法都将不胜感激。我可能会得到这个还有其他原因吗?

看起来ImageFramework类有一个名为main的成员。因此,宏#define main ace_main_i ...展开并给出错误。