函数的前向声明搞砸了,说args是未声明的标识符

时间:2013-02-05 16:29:53

标签: c++ function forward-declaration function-calls

这是我的代码:

  • mainheader.h

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

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

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

  

_grid和string是未声明的标识符

然而,由于它只是原型,它不应该担心_grid的存在,对吗?

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

4 个答案:

答案 0 :(得分:4)

对于string,您必须使用std::string

答案 1 :(得分:1)

它需要知道标题中的__grid以及字符串 - 转发声明与否。你需要至少在它上面的某个地方放置一个struct __grid;或类似的东西,以便它有一些关于它是什么的线索。对于字符串相同...

答案 2 :(得分:1)

您需要#include <string>中的mainheader.h并将string称为std::string。您还需要包含获取_grid所需的一切:

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

相关帖子here

答案 3 :(得分:0)

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