2013-02-05 65 views
1

我無法將對象指針的指針向量的元素賦值給對象指針。我在Linux上並使用Eclipse IDE。如果你想看看我的問題:對象指針賦值指針向量的元素

void Parse::parseDatalogProgram(vector<Token*>* tokens) 
{ 
    Token* currentToken = tokens[0]; 
... 
} 

我得到一個語法錯誤說:「不能將‘的std ::矢量’到‘令牌*’在初始化」,雖然上面似乎並不以這種方式看我如何正確地解決這個問題?

回答

5

tokens是一個指針,而不是一個vector本身。你可以做

tokens->operator[](0); 

(*tokens)[0]; 
2
Token* currentToken = (*tokens)[0]; 

確保令牌不爲空。爲什麼你不通過參考,而是?

2

tokens指向矢量的指針,而不是對象或引用。 C++的方式將被改變的函數原型:

void Parse::parseDatalogProgram(const vector<Token*>& tokens){...} 

如果這是不可能的,你可以簡單地解引用使用它之前的指針:Token* currentToken = (*tokens)[0]