0

「Main.cpp」ファイル内に、クラス内の実装 .cpp ファイル内で実行する必要がある関数があるとします。これについてどうすればいいですか?

関数 findDate を持つ Main.cpp があり、Dates というクラスにある関数内で呼び出す必要があるとします。Main.cpp ファイルを含める際の問題は、すべてが再初期化され、#ifndef を Main.cpp ファイル内で動作させることができないことです。ありがとう!

4

2 に答える 2

2

ファイル main.h で findDate を宣言する (定義しない) 必要があります。次に、findDate を呼び出す必要があるファイルの先頭に .h ファイルを含めます。

于 2013-09-17T01:22:25.497 に答える
1

これを行うための一般的な手順を次に示します。

Main.h という名前のファイルを作成します。

#pragma once // Include guard, so you don't include multiple times.

// Declaration (it is okay to have multiple declarations, if they
//              have a corresponding definition somewhere)
date findDate (void);

Main.cpp:

// Definition (it is not okay to have multiple non-static definitions)
date
findDate (void)
{
  // Do some stuff
  return something;
}

日付.cpp

#include "Main.h"

date
Dates::SomeFunction (void)
{
  return ::findDate ();
}

「Main.cpp」を含めないでください。これにより、関数の複数の実装とシンボルが作成されfindDate (...)(関数が宣言されていないと仮定static)、リンカーはリンク先の出力オブジェクトを特定できなくなります。これは、シンボル衝突または多重定義エラーとして知られています。

于 2013-09-17T01:35:50.233 に答える