Я учусь об операторе условия использования книги «C++ Primer 5-е издание» Я в настоящее время пытаюсь Exercise 4.21 в главе 4. Осуществление гласит:Состояние оператора и станд :: соиЬ не играет хороший
Упражнение 4.21: Напишите программу для использования условного оператора для поиска элементов в vector<int>
, которые имеют нечетное значение и удваивают значение каждого такого элемента.
Я использовал оператор условия в диапазоне для обработки каждого элемента в векторе «ivec». Ошибка/ошибка возникает в части else (:) оператора условия при попытке std::cout << &ivec << " holds an even number";
Этот код должен распечатать адрес в памяти и указать, что он содержит четное число. Однако я получаю следующую ошибку.
Полученная ошибка: Нельзя ссылаться - это удаленная функция. ошибка отсылая к std::cout
на линии 15.
Компилятор используется: VB экспресс 2013
1) Может кто-нибудь объяснить, почему мой код по ошибке?
2) Как я могу изменить код, чтобы исправить ошибку и заставить программу работать?
#include "stdafx.h"
#include <iostream>
#include <vector>
int main(){
int i1;
std::vector<int> ivec;
while (std::cin >> i1){ ivec.push_back(i1); };
for (int p1 : ivec){
int i2 = p1 % 2;
(i2 != 0) ? p1 *= 2 : std::cout << &ivec << " holds an even number";
i2 = 0;
}
system("pause");
return 0;
}
Из моего опыта VisualStudio (который, я полагаю, вы имеете в виду с «VB express 2013»), не имеет приятных понятных сообщений об ошибках. Возможно, вам стоит попробовать вместо clang ++, например [в качестве онлайн-компилятора] (http://coliru.stacked-crooked.com/a/9628bf94a6ba3a14). – dyp
Итак, части после '?' И ':' должны быть одного и того же типа или неявно конвертируемыми в один и тот же тип, так как выражение '(a? B: c)' должно оцениваться одним типом. Ваши типы - 'int' и' std :: ostream & ', которые не конвертируются друг в друга. – PeterT