我尝试使用#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”

我仍然没有弄清楚这个错误怎么发生的?有任何想法吗?提前致谢!

最佳答案

typedef是C和C ++编程语言的编译器令牌,而不是MACRO。

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


未在此范围内声明“ myStateType”:意味着您的程序不知道类型:myStateType

关于c++ - #typedef导致此范围内未声明“myStateType”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43285994/

10-10 00:12