2017-04-07 62 views
0

沒有宣佈我試圖用#typedef聲明一個類型,方便使用我自己的自定義名稱:「myStateType」在此範圍內引起#typedef

class Solution { 
public: 
    void dfs(vector<vector<char>>& board, int i, int j) 
    { 
     using namespace std; 
     #typedef std::pair<int, int> myStateType; 

     std::queue<myStateType> q; // error on this line 
     ... 
    } 
}; 

然而,編譯錯誤顯示在此行std::queue<myStateType> q;

「myStateType」在此範圍內未聲明

我還沒有想出如何此錯誤可能發生?有任何想法嗎?提前致謝!

+1

是實際的代碼的''#部分? 'typedef std :: pair myStateType;'應該沒問題。 –

+1

我覺得奇怪的是,你正在使用'using namespace std;'而且還指定'std ::'命名空間IIF該行在'using'語句之後出現? –

回答

1

typedef是C和C++編程語言中的編譯器令牌,不是MACRO

typedef std::pair<int,int> myStateType; // don't put # before 
std:queue<myStateType> q; 

'myStateType' 在此範圍未聲明:意味着你PROGRAMM不知道類型:myStateType

+1

我發現調用[預處理指令](http://en.cppreference.com/w/cpp/preprocessor)宏有點誤導。 –

+0

FrançoisAndrieux是對的。通過刪除'#',程序起作用 – lightrek