Все мои ребята, у меня проблема с моим кодом. Я пытаюсь использовать макрос и вектор в моем коде. Но в моем коде есть ошибка, точно в макрокоде. Я не знаю, в чем ошибка. Это мой код:lvalue требуется как левый операнд ошибки присваивания в C++
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <ostream>
using namespace std;
#define LOOP(a,b) for((int)(a) = 0; (a) < (int)(b); (a)++)
int main(){
vector<string> sentence;
sentence.reserve(10);
int i=0, c = sentence.size();
sentence.push_back("Hello,");
sentence.push_back("how");
sentence.push_back("are");
sentence.push_back("you");
sentence.push_back("?");
LOOP(i,c){
cout << i << endl;
}
return 0;
}
Я надеюсь, что некоторые из вас может помочь мне решить эту проблему. С уважением.
Какова ваша цель для этого '(int)' перед '(int) (a) = 0;' ?? – WhozCraig
@MooingDuck по какой-либо причине он хочет использовать 'i' в' main() 'в качестве параметра макроса для' a'. В противном случае я не вижу причины для параметра макроса 'a'. Просто назвать индекс for-loop кажется таким же странным, как сам макрос – WhozCraig
Вместо использования макроса, сделайте какой-то диапазон или используйте 'boost :: irange'. 'for (auto i: range (c)) {std :: cout << i;}'. Это проще, когда вам не нужны индексы: 'for (const auto & word: предложение) {std :: cout << слово;}' – chris