私は、すべてがうまくいくように見えるクラス「ボード」に取り組んでいました。どういうわけか、他のクラスで約 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 に含まれる最初のファイルに配置されます。ファイルの順序を変更すると、最初のファイルは常に ; 「使う」前に… 変なこと。