1

私は、すべてがうまくいくように見えるクラス「ボード」に取り組んでいました。どういうわけか、他のクラスで約 1 時間の作業を行った後、Board はエラーに関してかなり奇妙な動作を示しました。

//headerfile
#pragma once

using namespace System;

#include "stdafx.h"

ref class Board
{

public:
   Board();
   ~Board();
   void printToConsole();

private:
    array<int^, 2>^ boardData;
};

このコードで得たエラーは次のとおりです。

Error   1   error C2143: syntax error : missing ';' before 'using'  e:\users\felix\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\Board.h Line:4 Column:1    ConsoleApplication1 

Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   e:\users\felix\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\Board.h Line:4 Column:1    ConsoleApplication1

行 4 は「名前空間システムを使用する」です。誰かが私が間違ったことを説明できますか? これは特に奇妙に思えますが、これとほとんど同じように見えるがエラーを出力しない別のクラス「パターン」があるためです。

編集:

そのため、すでに私に言ったように、この前にインクルードしたヘッダーファイルにセミコロンが含まれていない可能性があります。また、同様の質問がありました。投稿していただきありがとうございます;)これが私のstdafx.hです(コメントなし):

#pragma once
#include "Board.h"
#include "Pattern.h"
#include <string>
#include <iostream>

私が知る限り、このプラグマは VS でこのコンソール アプリケーションを作成したときにそこにあったため、「Board.h」を含む前に実行されたものはないようです。他のすべてのファイルを見落としており、Board をここ以外の場所に含めたことはありません...

編集2:

エラーをさらに追跡しようとすると、「using namespace System;」が欠落していることに気付きました。私が挿入した別のクラスで。これにより、かなり興味深い動作が発生しました.stdafx.hでも名前空間Systemを使用すると、エラーがstdafx.hに配置されるようになりました。そうしないと、エラーは stdafx.h に含まれる最初のファイルに配置されます。ファイルの順序を変更すると、最初のファイルは常に ; 「使う」前に… 変なこと。

4

1 に答える 1

0

ヘレカ!間違いは stdafx.cpp にありましたが、編集したことを覚えていないので奇妙に感じますが、まあまあです。

stdafx//.cpp : source file that includes just the standard includes
// ConsoleApplication1.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

明確にわかるように、「stdafx」は、型指定子と「;」が含まれる不完全なステートメントとして解釈されました。が欠落していたため、2 つのエラーが発生しました。コメントの誰もがすでに私に正しく言ったように、エラーは他のクラスに含めることによって下向きに送信されました。コードの最初の実際の行 (ディレクティブではない) が発生した場所が示されました。

チェーンは次のように機能しました。

stdafx.cpp -> stdafx.h -> the first headerfile included in stdafx.h -> "using namespace System;"

とにかく助けてくれてありがとう、私はとにかくこれを理解していなかったでしょう:)

于 2013-04-26T07:48:24.567 に答える