Это мой код:
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
, право ?
Кроме того, заголовок включен после строки, но он также не знает о строке. Похоже, что он пытается вызвать функцию вместо объявления вперед. В чем дело?
За string
ты должен использовать std::string
,
Он должен знать о __grid в заголовке, а также об объявлении строки — вперед или нет. Вам нужно как минимум разместить struct __grid;
где-то выше этого или лайков, так что у него есть какая-то подсказка, что это такое. То же самое для строки …
Вам нужно #include <string>
в вашем mainheader.h
и обратитесь к string
как std::string
, Вы также должны включить все необходимое, чтобы получить _grid
:
//mainheader.h
#include <string>
void displaygrid(int (* _grid)[10][10] , std::string msg );
Связанный пост Вот.
Вам также нужен аргумент по умолчанию в заголовочном файле, а не в реализации, потому что вы хотите, чтобы код вызывал его знать тот msg
может быть по умолчанию.