1. ホーム
  2. c++

[解決済み] C++で宣言されているが定義されていない静的関数

2023-07-11 11:49:25

質問

C++を使用した以下のコードでエラーが発生します。

メイン.cpp

#include "file.h"

int main()
{
   int k = GetInteger();
   return 0;
}

ファイル.h

static int GetInteger();

ファイル.cpp

#include "file.h"

static int GetInteger()
{
   return 1;
}

出るエラーは

Error C2129: static function 'int GetInteger(void)' declared but not defined.

有名な記事を読みました。 CとC++でコードファイルを整理する" を読みましたが、このコードのどこが問題なのか理解できません。

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

C++の場合。 static は、関数や変数が定義された翻訳ユニットでのみ使用され、他の翻訳ユニットでは使用されないことを意味します。

ここでは、異なる翻訳単位から静的な関数を使おうとしています ( Main.cpp ) で定義されているものとは異なる翻訳ユニット ( File.cpp ).

を削除して static を削除すれば、正常に動作するはずです。