0

顧客、DVD、領収書、クラス、メイン機能とメニュー機能用の2つのファイルを実装し、すべての.hファイルを含めましたが、たとえばメニュー機能から機能を使用すると、機能せず、機能が機能しないと言います定義されています。アプリケーションのドライバーであるmainと呼ばれる別の.cppファイルにを書き込みたいと思います。

これが私のコードです:

#ifndef CUSTOMER_H
#include "Customer.h"
#endif

#ifndef DVD_H
#include "DVD.h"
#endif

#ifndef MAIN_FUNC_H
#include "MainFunctions.h"
#endif

#ifndef MENU_FUNC_H
#include "MenuFunctions.h"
#endif

#ifndef RECEIPT_H
#include "Receipt.h"
#endif

using namespace std;

int main () {
    intro();

    return 0;
}

エラーは次のとおりです。

エラー1エラーC2129:静的関数'void intro(void)'が宣言されていますが、定義されていませんc:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ xmemory 186 1 DVD_App

関数がファイルでintro()定義され、で実装されている場合でもMenuFunctions.hMenuFunctions.cpp

注:MenuFunctionsとMainFunctionsの2つのファイルにはクラスがありません。静的関数だけで、インクルードガードなしで試してみましたが、やはり機能しませんでした。

4

3 に答える 3

2

関数をstatic(メソッドではなく関数に注意)でマークすると、コンパイル単位(.cppファイル)の「ローカル」になります。したがって、そこで宣言および定義する必要があり、他のcppファイルからは表示されません。したがって、静的を削除すると、コンパイルユニット間で関数にアクセスできるようになります。

于 2012-05-11T12:31:51.310 に答える
0

MenuFunctions.cppをコンパイルしていません。コンパイラーが、実装コードを必要とするintro()の定義を知るためです。makefileがあるかどうかを確認し、ない場合は、main()の前にMenuFunctions.cppを含めるか、MenuFunctions.cppもコンパイラーに指定します。

于 2012-05-11T12:26:54.207 に答える
0

MenuFunctions.cppファイル

#include "MenuFunctions.h"

それの開始時に。エラーは、宣言されているが定義されていないことを示しています。#include "MenuFunctions.h"ダブルインクルードを防ぐためにを保護します。

于 2012-05-11T12:27:51.837 に答える