2011-02-27 61 views
1

我目前正在用Qt编写一个小应用程序(4.7)。我使用嵌套的命名空间像如何在moc文件中使用级联命名空间?

namespace app { 
    namespace core { 
     class CoreClass {...} 
    } 
} 

因为我是一个豆蔻有点懒,我使用的符号持有开幕快捷键合的命名空间声明:

APP_START 
    class CoreClass {...} 
APP_END 

的符号的定义全局头文件。

到目前为止,这么好。它在编译时工作得很好。但是当moc生成器创建moc文件时,它错过了名称空间声明,并且在标准名称空间中生成方法。当不使用符号时,一切正常。

当我重新定义QT_BEGIN_MOC_NAMESPACE符号时,编译器会在每个include上引发重定义警告。这确实有效,但我认为它不是很好。

这个问题有更好的解决方案吗?

回答

0

首先我想知道为什么moc没有进行宏替换。也许 - 我错了?

其次,您可以尝试-D参数moc。可能是这样的:moc“-DAPP_BEGIN = namespace app {namespace core {”

+0

我不认为就是这样,因为我使用的是Qt Creator。你找到为什么moc dosn't做替补的方法听起来不错。我正在关注那个。 – 2011-02-28 21:08:55

+0

我正在玩Qt工具中的moc生成器。而且似乎没有办法告诉它解析预处理器指令。伤心。 – 2011-02-28 23:26:10

+0

顺便说一句'Q_MOC_RUN'符号也不起作用。 – 2011-02-28 23:31:21