C++무엇을의 오류"의 초기값을 참조하여 비수해야 합 lvalue"의 이 경우에는?

0

질문

나는 완전한 C++초보자 및 할당 함수를 작성하는 반환 요소의 번호입니다. 아래 나는 포함 기능도 만들어라 print_vector 는 인쇄의 모든 요소를 벡터습니다.

에 할당을 확인하기 위해서는 경우 factorize 기능 작동,우리가 사용하는 test_factorize 기능을 제공하는데,내가도 포함되어 있습니다. 그러나 문제는 나에서 실행하는 것은 주어 test_factorize 이 작동하지 않으로 인해 오류"의 초기값을 참조하여 비수해야 합 lvalue." 내가 모르는 이것이 무엇을 의미와 이유 test_factorize 으로 실행되기 때문에 문제가 출력 factorize 은 벡터의 입력 print_vector 또한 벡터,그래서 이런 내용의 test_factorize 오류가 발생하지만,저는 그것을 의심 뭔가가 될 수 있에서`인수 분해'기능이 내가 정의되는 원인이 오류가 있습니다.

#include <iostream>
#include <vector>

using namespace std;

void print_vector(std::vector<int>& v) {
    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << " ";
    }
    cout << endl;
}

std::vector<int> factorize(int n) {
    std::vector<int> answer;
    for (int i = 1;i < n + 1; ++i) {
        if (n % i == 0) {
            answer.push_back(i);
        }
    }
    return answer;
}

void test_factorize() {
print_vector(factorize(2));
print_vector(factorize(72));
print_vector(factorize(196));
}
c++ function stdvector
2021-11-23 23:13:16
1

최고의 응답

2

에 오류가 이것에서 라인:

void print_vector(std::vector<int>& v) {

때문에 포함되지 않았 const 키워드에서 이수 유형,당신은(암시적으로)을 나타내는 print_vector 는 권리의 내용을 수정 v.

그러나,당신은 전화 print_vector() 임시 오브젝트(벡터에 의해 반환 factorize())인수로,그리고 C++지 전달할 수 있도록 임시체에 의해 비 const 참조,아마도 이론에는 변경하여 일시적 객체가 무의미하기 때문에(임시가 될 것이 파괴되는 즉시 함수 호출이 반환,그래서 모든 변경 사항은 그것은 아무런 효과가 없을 것이다)및 따라서 프로그래머에 오류가 있습니다.

어떤 경우에,고정이 변경 기능이 선언하는 이:

void print_vector(const std::vector<int>& v) {

다는 것이 전달할 수 있도록 참조 에 임시로-벡터다.

2021-11-23 23:17:43

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................