我当时正在做一个类似“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号线是 “使用命名空间系统;”任何人都可以解释我做错了什么吗? 这似乎特别奇怪,因为我有另一个类“模式”,看起来非常像这样,但不输出任何错误。
编辑:
所以当你们当中有些人已经告诉我,分号可在我这包括一个前headerfile失踪。也有一个类似的问题,感谢张贴的一个;) 所以这是我现在的stdafx.h中(没有评论):
#pragma once
#include "Board.h"
#include "Pattern.h"
#include <string>
#include <iostream>
据我知道这编译在那里,当我创造了这个控制台应用程序与VS,所以在包含“Board.h”之前似乎没有任何执行过任何东西。 我忽略了我的所有其他文件,我从来没有纳入董事会这里比其他地方...
编辑2:
我试图进一步追查错误,我注意到一个丢失的“使用命名空间系统;”在我插入的另一课上。这导致了一个非常有趣的行为,因为当我在那里使用命名空间System时,错误现在位于stdafx.h中。如果我不知道这个错误将会出现在包含在stdafx.h中的第一个文件中 当我改变文件的顺序时,第一个文件总是那个似乎缺少a的文件;之前“使用”......奇怪的事情。
听起来像是你可能有一个文件,它是一个错误在此之前包含在另一个文件中。 – 2013-04-25 20:06:16
几乎可以肯定的是,在这个*之前,你从包含的头文件中*丢失了一个分号。 – john 2013-04-25 20:06:19
[类似问题](http://stackoverflow.com/questions/16092520/missing-before-template#comment22975696_16092520),我也打赌,这是同样的问题。 – jrok 2013-04-25 20:07:25