Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] error: no matching function for call to ‘getline(std::istream&, int&)’

Ostatnio zmodyfikowano 2013-10-19 18:52
Autor Wiadomość
Narzew
Temat założony przez niniejszego użytkownika
[C++] error: no matching function for call to ‘getline(std::istream&, int&)’
» 2013-10-19 18:48:36
Witam. Mam taki kod:

C/C++
#include <cstdlib>
#include <iostream>
#include <string>
#include <limits>

using namespace std;

void clearcin() {
    cin.clear();
    cin.ignore( numeric_limits < streamsize >::max(), '\n' );
}

void wczytaj_osobe( string & imie, string & nazwisko, int & wiek )
{
    do {
        cout << "Podaj imie: ";
        getline( cin, imie );
    } while( cin.good() == false );
   
    do {
        clearcin();
        cout << "Podaj nazwisko: ";
        getline( cin, nazwisko );
    } while( cin.good() == false );
   
    do {
        clearcin();
        cout << "Podaj wiek: ";
        getline( cin, wiek );
    } while( cin.good() == false );
   
}

void wypisz_osobe( string imie, string nazwisko, int wiek ) {
    cout << "Imie: " << imie << endl <<
    "Nazwisko: " << nazwisko << endl <<
    "Wiek: " << wiek << endl;
}

int main()
{
    string imie[ 2 ];
    string nazwisko[ 2 ];
    int wiek[ 2 ];
    for( int i = 0; i < 2; i++ ) {
        wczytaj_osobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
    }
    for( int i = 0; i < 2; i++ ) {
        wypisz_osobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
    }
    return 0;
}

Przy kompilacji mam serię mało zrozumiałych dla mnie błędów.

Output z terminala:


nikodem@nikodem-K8Upgrade-NF3:~/Pulpit/Workshop/C++$ g++ -o std2.bin std2.cpp
std2.cpp: In function ‘void wczytaj_osobe(std::string&, std::string&, int&)’:
std2.cpp:27:19: error: no matching function for call to ‘getline(std::istream&, int&)’
std2.cpp:27:19: note: candidates are:
In file included from /usr/include/c++/4.7/string:55:0,
                 from /usr/include/c++/4.7/bits/locale_classes.h:42,
                 from /usr/include/c++/4.7/bits/ios_base.h:43,
                 from /usr/include/c++/4.7/ios:43,
                 from /usr/include/c++/4.7/ostream:40,
                 from /usr/include/c++/4.7/iostream:40,
                 from std2.cpp:2:
/usr/include/c++/4.7/bits/basic_string.tcc:1070:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::getline(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&, _CharT)
/usr/include/c++/4.7/bits/basic_string.tcc:1070:5: note:   template argument deduction/substitution failed:
std2.cpp:27:19: note:   mismatched types ‘std::basic_string<_CharT, _Traits, _Alloc>’ and ‘int’
In file included from /usr/include/c++/4.7/string:54:0,
                 from /usr/include/c++/4.7/bits/locale_classes.h:42,
                 from /usr/include/c++/4.7/bits/ios_base.h:43,
                 from /usr/include/c++/4.7/ios:43,
                 from /usr/include/c++/4.7/ostream:40,
                 from /usr/include/c++/4.7/iostream:40,
                 from std2.cpp:2:
/usr/include/c++/4.7/bits/basic_string.h:2792:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::getline(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&)
/usr/include/c++/4.7/bits/basic_string.h:2792:5: note:   template argument deduction/substitution failed:
std2.cpp:27:19: note:   mismatched types ‘std::basic_string<_CharT, _Traits, _Alloc>’ and ‘int’
nikodem@nikodem-K8Upgrade-NF3:~/Pulpit/Workshop/C++$

Wersja GCC (G++): 4.7.3

Może mi ktoś powiedzieć co zrobiłem źle ?
P-94054
Monika90
» 2013-10-19 18:52:22
getline( cin, wiek );
Drugi argument getline nie może być typu int, musi być typu string, wstring, itp.
P-94055
« 1 »
  Strona 1 z 1