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

Rozdzial 35

Ostatnio zmodyfikowano 2017-01-15 14:56
Autor Wiadomość
bartman
Temat założony przez niniejszego użytkownika
Rozdzial 35
» 2017-01-15 12:31:43
Witam,
Posiadam kompilator XCode, programuje w macOS.
Z 35 lekcji kopiuje poniższy przykład do kompilatoru:
C/C++
#include <iostream>
#include <fstream>

int main()
{
    std::ifstream plik( "dane.txt" );
    if( !plik.good() )
         return 0;
   
    int iPozycjaStartowa = 4;
    plik.seekg( iPozycjaStartowa );
   
    int iLiczba;
    plik >> iLiczba;
   
    int iWczytanychZnakow = plik.tellg() - iPozycjaStartowa;
    std::cout << "Liczba: " << iLiczba << std::endl;
    std::cout << "Wczytano " << iWczytanychZnakow << " znakow" << std::endl;
    return 0;
}

i pokazuje mi następujaący bląd w 16 wersie:
Use of overloaded operator '-' is ambiguous (with operand types'pos_type...
Otwierając ten samy przykład na online kompilatorze:

https://www.tutorialspoint.com/compile_cpp_online.php

żadnego błędu nie pokazuje.

Z góry dziękuję za odpowiedź.
P-156454
mokrowski
» 2017-01-15 14:13:48
Kompilator online którego użyłeś, pokazuje ostrzeżenie:
main.cpp:16:44: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second: [enabled by default]                                       
     int iWczytanychZnakow = plik.tellg() - iPozycjaStartowa;
Jeśli nawet nie znasz angielskiego, możesz to wklepać do Google translate i powie Ci że: "ostrzeżenie: ISO C ++ mówi, że to jest niejednoznaczne, chociaż najgorsza konwersja pierwszego jest lepsza niż najgorsza konwersja drugiego"
C/C++
#include <iostream>
#include <fstream>
#include <string>

int main()
{
    std::ifstream plik( "dane.txt" );
    if( not plik )
         exit( EXIT_FAILURE );
   
    size_t iPozycjaStartowa = 4;
    plik.seekg( iPozycjaStartowa );
   
    int iLiczba;
    plik >> iLiczba;
   
    size_t iWczytanychZnakow = static_cast < size_t >( plik.tellg() ) - iPozycjaStartowa;
    std::cout << "Liczba: " << iLiczba << std::endl;
    std::cout << "Wczytano " << iWczytanychZnakow << " znakow" << std::endl;
}
P-156456
bartman
Temat założony przez niniejszego użytkownika
» 2017-01-15 14:56:17
Dziekuje
P-156457
« 1 »
  Strona 1 z 1