c ++ - Integer Vector element sammenligning ved hjælp af subscript operatør fejler, men lykkes ved at bruge ved funktion

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver en tilbagekaldsfunktion, som har en henvisning til en int-vektor, der er overført til den i en struktur. Når jeg forsøger at få adgang til et element i vektoren ved hjælp af subscriptoperatør [[]], indikerer Intellisense at == ikke kan sammenligne de to elementer specifikt fejlen er
fejl C2678: binær '==': ingen operatør fundet, der tager en venstre operand af typen 'std :: vector < \_Ty>' (eller der er ingen acceptabel konvertering). Men når du bruger funktionen (), er der ikke noget problem.


//body of call back function
searchInfo* argVal = (searchInfo*) Parameter;
for(int i = argVal->inclStartPos; i < argVal->exclEndPos; ++i){
    if(argVal->numVector[i] == argVal->searchNum)//problem here
        argVal->result = true;
//this is the structure passed through pointer

struct searchInfo{
int inclStartPos;
int exclEndPos;
vector<int>* numVector; 
int searchNum;
bool result;
};


Da operatøren [[]] og () af en vektor arbejder næsten (forskellen betyder ikke her) på samme måde, hvorfor fejlen?

Bedste reference


Faktisk sammenligner du vektor < int> med int, da feltet numVector har type


vector<int>*


Simpelthen, du har erklæret en række vektor s.
Operatør [[]] vil returnere en værdi af typen vektor.


Sandsynligvis har du stavet forklaringen. Måske ønskede du at erklære numVector som følger:


vector<int> numVector;