0

这是我的代码:

  • 主头文件.h

    void displaygrid(int (* _grid)[10][10] , string msg );
    
  • 东西.cpp

    #include <string>
    #include "mainheader.h"
    
    void displaygrid(int (* _grid)[10][10], string msg = "" )
    {
       //body goes here
    }
    

编译器在标题中的前向声明行说:

_grid 和 string 是未声明的标识符

不过既然只是原型,应该不用担心存在_grid吧?

此外,标头包含在字符串之后,但它也不知道字符串。看起来它试图调用函数而不是前向声明。怎么了?

4

4 回答 4

4

因为string你必须使用std::string.

于 2013-02-05T16:31:54.750 回答
1

它需要了解标头中的 __grid 以及字符串前向声明与否。你至少需要在struct __grid;它上面的某个地方放置一个或类似的东西,这样它就可以知道它是什么。字符串也一样...

于 2013-02-05T16:35:25.277 回答
1

您需要#include <string>在您的mainheader.h和引用stringstd::string. 您还需要包括获得所需的任何内容_grid

//mainheader.h
#include <string>
void displaygrid(int (* _grid)[10][10] , std::string msg );

相关帖子在这里

于 2013-02-05T16:35:56.930 回答
0

您还需要头文件中的默认参数,而不是实现中的默认参数,因为您希望调用它的代码知道可以msg默认。

于 2013-02-05T16:35:26.987 回答