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