我在将对象指针的指针向量的元素分配给对象指针时遇到问题。我在 Linux 上并使用 Eclipse IDE。如果你想看看我的问题:
void Parse::parseDatalogProgram(vector<Token*>* tokens)
{
Token* currentToken = tokens[0];
...
}
我收到一个语法错误,说“无法在初始化中将 'std::vector' 转换为 'Token*'”,尽管上面看起来不是这样 我该如何正确解决这个问题?
我在将对象指针的指针向量的元素分配给对象指针时遇到问题。我在 Linux 上并使用 Eclipse IDE。如果你想看看我的问题:
void Parse::parseDatalogProgram(vector<Token*>* tokens)
{
Token* currentToken = tokens[0];
...
}
我收到一个语法错误,说“无法在初始化中将 'std::vector' 转换为 'Token*'”,尽管上面看起来不是这样 我该如何正确解决这个问题?
tokens
是一个指针,而不是一个vector
本身。你可以做
tokens->operator[](0);
或者
(*tokens)[0];
Token* currentToken = (*tokens)[0];
确保令牌不为空。你为什么不传递参考呢?
tokens
是指向 vector的指针,而不是对象或引用。C ++方式将函数原型更改为:
void Parse::parseDatalogProgram(const vector<Token*>& tokens){...}
如果这不可能,您可以在使用它之前简单地取消引用指针:Token* currentToken = (*tokens)[0]