The error is:
In function ‘int returnShortestWeightedBranch(std::vector >*)’:
error: name lookup of ‘jj’ changed for
You have a semicolon at the end of the inner for statement. That ends the scope of jj
there, so it is not visible inside the block.
Edit
You have solved the scope problem, but still have your for loop executing just
<nothing>;
Remove the semicolon after the parenthesis!
Some compilers may not accept the use of the variable 'jj' after the for loop is ended. Since the variable is declared inside the for loop, it is destroyed right after it is executed. Thus when you declare your iteration variable outside the for loop it remains there for further use.
In reality it doesn't work like that and that's why you can force the compiler to ignore the error by adding '-fpermissive'.
False: for(...;...;...;);
True: for(...;...;...;)
You shouldn't use a semicolon, ;
for (int jj = 0; jj < routeVector[i].selectedBranchesVector.size(); jj++);
This line ends with a semicolon! It shouldn't :)