나는이 책을 사용하여 조건 연산자에 대해 배우고있다 "C++ 프라이머 5 판"나는 현재 시도하고 운동 4.21를 재생하지 :조건 연산자와 표준 : : cout을 다음과 같이 운동 읽기 4 장에 좋은
연습 4.21 : 조건 연산자를 사용하여 홀수 값을 가진 vector<int>
의 요소를 찾고 각 요소의 값을 두 배로하는 프로그램을 작성하십시오.
나는 조건부 연산자를 사용하여 벡터 "ivec"의 각 요소를 처리했습니다. 이 코드는 메모리에 주소를 출력하고 짝수를 저장한다고 가정합니다. std::cout << &ivec << " holds an even number";
이 코드는 메모리에 주소를 출력하고 짝수를 저장한다고 가정합니다. 그러나 나는 아래의 오류가 발생합니다.
오류 수신 : 참조 할 수 없습니다. 삭제 된 기능입니다. 내 코드에 오류가 왜 사람이 설명 할 수 2,013
1) 표현 VB : 오류가 15
컴파일러를 사용할 줄에 std::cout
로 다스 려한다?
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