我正在研究一个似乎一切都很好的“板”类。不知何故,在学习其他课程大约一个小时后,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”之前似乎没有任何执行过的东西。我忽略了我所有的其他文件,除了这里,我从来没有在其他任何地方包含过董事会......
编辑2:
当我尝试进一步追踪错误时,我注意到缺少“使用命名空间系统;” 在我插入的另一个类中。这导致了一个非常有趣的行为,因为当我在那里使用命名空间 System 时,错误现在位于 stdafx.h 中。如果我不这样做,错误将位于 stdafx.h 中包含的第一个文件中。当我更改文件的顺序时,第一个总是似乎缺少 ; 在“使用”之前......奇怪的事情。