c++ - 解析 "cannot define member function ... within .."

标签 c++

我已经为这个问题苦苦挣扎了一段时间,我想知道一种系统的方法来找出我可能会收到此错误的原因。显然我的解决方案中有多个组件。当我尝试构建我的组件之一时出现此错误。

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


In file included from C:\mingw64\required\ACE\ACE_wrappers/ace/config-all.h:89:0,
                 from C:\windows-libs\corba\ACE_wrappers\TAO\orbsvcs/orbsvcs/CosNamingC.h:37,
                 from C:\Users\UserAdmin\TreeShell\MainProcess\SourceCode\ExternalCommunication\CORBA/TCorbaClient.h:12,
                 from C:\Users\UserAdmin\TreeShell\MainProcess\SourceCode\ExternalCommunication/SystemCommunicator.h:23,
                 from C:\Users\UserAdmin\TreeShell\MainProcess\SourceCode\ApplicationManager\ApplMngExternalComm.h:18,
                 from C:\Users\UserAdmin\TreeShell\MainProcess\SourceCode\ApplicationManager\ApplMngMessageHandler.h:15,
                 from C:\Users\UserAdmin\TreeShell\MainProcess\SourceCode\ApplicationManager\ApplMngMessageHandler.cpp:15:
C:\mingw64\required\ACE\ACE_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 库 header ,但我找不到任何 header 。我将不胜感激关于找出可能导致此问题的原因的系统方法的建议。我什至可能错误地解释了这条消息。我对此消息的理解是,imageframework 类中的方法或其基类中的方法可能会触发上述代码部分。如果我错了请纠正我?对此问题的任何建议想法将不胜感激。我可能会得到这个还有其他原因吗?

最佳答案

看起来 ImageFramework 类有一个名为 main 的成员。所以宏 #define main ace_main_i ... 扩展并给出错误。

关于c++ - 解析 "cannot define member function ... within ..",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955920/

相关文章:

c++ - 从 qml 访问 Qt 2 或 3d bool 列表

c++ - boost::asio 完全断开连接

c++ - boost::unordered_map 是否返回值的引用或拷贝

c++ - 添加初始化列表的元素

c++ - 使用 googletest 识别类型参数化测试中使用的基类

C++头文件包含错误

c++ - OpenCV 在 VideoCapture grab() 上挂起

c++ - ‘[’ 标记之前的预期主表达式

c++ - boost::正则表达式-\bb?

c++ - CLion Windows 中的 clang++,如何使用 MinGW--w64 而不是 Windows VC 运行?