0

我有一个这样的项目:

Header (.h) files
 ________________                 _________ 
| Main Big Class |---------------| ModuleB |
| - libraries    |   _________   | -SubMod |    
|________________|--| ModuleA |  |_________|
                    | -SubMod |       |
                    |_________|   ____|____
                         |       | SubModB |
                     ____|____   |_________|
                    | SubModA |
                    |_________|

All Code (.cpp) files have #include "Main Big Class.h"

因此,在 ModuleA 的子模块上,它们的标头中没有任何包含,并且它们的 .cpp 文件中只有#include "Main.h",其中我有用于字符串、向量和我在项目。在 ModuleA 上,我包含了它的所有子模块,并且我可以在 ModuleA 的任何子模块中使用向量和字符串。

现在我要转移到 ModuleB,我添加了一个新的子模块,并且和以前一样,ModuleB 有:

#include "SubModuleB1.h"
#include "SubModuleB2.h"

但是当我尝试编译时,Visual Studio 在 B 的这些子模块中有字符串和向量的行显示错误。

有时注释行,编译,然后取消注释它们可能会编译,但是我必须逐行执行此操作,并且单个错误意味着除非我再次将它们全部注释,否则它将无法编译。

我已经尝试清理和重建,但没有成功,我不知道为什么会发生这种情况。

为什么会发生这种情况,我该如何解决?

编辑:错误是每行 3 个:

error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'
4

1 回答 1

0

在您的 cpp 文件中,添加以下内容

   using namespace std;

对于错误 C4430,我认为您忘记了voidint在定义函数时,例如

    void myfunction (...)
    {
        //
    }

但在你的代码中你只有

    myfunction()
    {
        //
     }
于 2013-08-29T17:40:24.047 回答