0

私が取っているクラスのコードを書いています。プロジェクトのスコアをゼロにせずにすべてのコードを投稿することはできませんが、ドライバーの省略コードは次のとおりです。

    #pragma once
    #include <iostream>
    #include <fstream>
    #include <string>
    #include "Stack.h"

    using namespace std;

    namespace jack
    {
        int high(char a)
        {
            // My Code
        };

        bool isSameOrHigher(char top, char cur)
        {
            // My Code
        };

        int main()
        {
            // My Code
        };
    };

何らかの理由で、このコードをコンパイルするときに把握できないため、次のエラーが発生します。

リンク: 致命的なエラー LNK1561: エントリ ポイントを定義する必要があります

さて、私が知る限り、このエラーはメイン関数がない場合にのみ発生するはずです。実際に持っていることがわかります。このファイルから別のプロジェクトにコードをコピーしようとしましたが、メイン関数を別の cpp ファイルに単独で分離しようとしました (これによりエラーが発生し、エントリ ポイント エラーが修正されませんでした)、再試行しました- Visual C++ Express をインストールし、完全にゼロから開始します。私の先生と私は、main() の前にこのファイル内のすべてのコード (および私が作成して含めた Stack.h ファイル内のすべてのコード) をチェックしましたが、括弧、セミコロン、またはその他の句読点の欠落はありません。他に何を試せばいいのかわからない。考え?

4

5 に答える 5

8

main名前空間の外に移動する必要があります。

標準が何を言わなければならないかを正確に気にする人のために(§3.6.1 / 1):

プログラムには、プログラムの指定された開始であると呼ばれるグローバル関数が含まれます。main

編集:「グローバル」が何を意味するかについての最後の言葉も必要な人のために(C ++ 03では§3.3.5 / 3、C ++ 11ではほぼ同じ文言で§3.3.6 / 3):

翻訳単位の最も外側の宣言領域も、グローバル名前空間と呼ばれる名前空間です。グローバル名前空間で宣言された名前には、グローバル名前空間スコープ(グローバル スコープとも呼ばれます) があります。[...] グローバルな名前空間スコープを持つ名前はグローバルであると言われます。

于 2013-02-10T03:58:57.510 に答える
5

main名前空間から抜け出す

于 2013-02-10T03:59:27.380 に答える
3

main関数を名前空間の外に移動します。

于 2013-02-10T03:59:02.647 に答える
3

main名前空間から関数を取り出します。技術的にmainは、実際にjack::mainは名前空間内にあります。

于 2013-02-10T03:59:04.567 に答える