2017-02-16 3 views
-1

Я пытаюсь вернуть несколько значений из функции bool, но получаю ошибку «Ошибка сегментации (core dumped)». Мой код:bool return many values ​​

#include<iostream> 

using namespace std; 

bool te(int b,int *c,int *e){ 

    if (b>5){ 
     *c=68; 
     return true; 
    } 
    else { 
     *e=69; 
     return false; 
    } 
} 

int main() { 
    int y; 
    int *z; 
    int *r; 

    cout<<"Give number:"<<endl; 
    cin>>y; 

    if(te(y,z,r)==1) { 
     cout<<"b is >5"<<endl; 
     cout<<*z<<endl; 
    } 
    else { 
     cout<<"b is <5"<<endl; 
     cout<<*r<<endl; 
    } 

    return 0; 
} 

Он работает, если bool = false, но я получаю ошибку сегментации, когда bool = true.

+0

Используйте ссылки или возврата 'станд :: tuple'. Или ваш пользовательский объект. – LogicStuff

ответ

1

Вы используете указатели, не выделяя фактическую физическую память. вы должны сделать что-то вроде:

int y, z, r; 

, а затем

if (te(y, &z, &r)) ...