1. ホーム
  2. c++

[解決済み] C++関数のデフォルト引数は、ヘッダと.cppのどちらで指定すべきですか?

2023-01-26 10:43:43

質問

私はC++の初心者です。私は私のヘッダーを設定するのに苦労しています。これは functions.hからです。

extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect *);

そして、これはfunctions.cppからの関数定義です。

void
apply_surface(int x, int y, SDL_Surface * source, SDL_Surface *
destination,SDL_Rect *clip = NULL)
{
    ...
}

そして、main.cppではこのように使っています。

#include "functions.h"
int
main (int argc, char * argv[])
{
    apply_surface(bla,bla,bla,bla); // 4 arguments, since last one is optional.
}

しかし、これはコンパイルできません。なぜなら、main.cppは最後のパラメータがオプションであることを知らないからです。どうすれば動くようになりますか?

どのように解決するのですか?

宣言を行う(つまり、ヘッダファイルの中で - functions.h ) がオプションのパラメータを含むようにし、定義 ( functions.cpp ).

//functions.h
extern void apply_surface(int, int, SDL_Surface *, SDL_Surface *,SDL_Rect * clip = NULL);

//functions.cpp
void apply_surface(int x, int y, SDL_Surface * source, SDL_Surface *
destination,SDL_Rect *clip /*= NULL*/)
{
    ...
}