2014-02-18 48 views
1

所以我試圖在C++中編程國際象棋,我決定讓我的移動處理程序它自己的類(這是一個主要功能之前),所以我可以用它在我的一些其他而不必複製到任何地方。函數不是全局命名空間的成員

然而,當我完成設置的一切了,我得到這個錯誤:「parseMove」:是不是「`全局命名空間」」

我使用的標準命名空間和所有公共函數和變量的一員,我知道,所以請不要提出來,除非它是相關的。我的IDE是MS的Visual C++ 2012

下面是代碼:

在主:

void playGame(){ 
     ... 
MoveParser parser;  //declare move handler 
     ... 
//example of use 
parser.parseMove(current, currentX, currentY); 
     ... 
} 

MoveParser.h:

#pragma once 
#include <sstream> 
#include <iostream> 
#include <string> 

using namespace std; 

class MoveParser 
{ 
public: 
MoveParser(void); 
~MoveParser(void); 

void parseMove(string, int &, int &); 
}; 

MoveParser.cpp:

#include "MoveParser.h" 


MoveParser::MoveParser(void) 
{ 
} 


MoveParser::~MoveParser(void) 
{ 
} 

void::parseMove(string str, int &x, int &y){ 

//random junk 

} 

還有Visual C++正在給我一些新的錯誤,這些錯誤並不是真實的......我知道它們並不是真實的,因爲它給我錯誤的代碼在添加新類之前運行良好,而且我沒有改變它。

無論如何,非常令人沮喪,希望有人能指出我在正確的方向。

+0

你忘了'MoveParser ::'在'MoveParser.cpp'的最後一個函數。 –

回答

2

您忘記在其定義中的函數名稱之前指定類名稱。這個代碼

void::parseMove(string str, int &x, int &y){ 

//random junk 

} 

更改爲

void MoveParser::parseMove(string str, int &x, int &y){ 

//random junk 

} 
+0

謝謝,這讓我瘋狂! – Radix