Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++]Problema con overloading

    codice:
     
    // Ora.h: interface for the Ora class.
    //
    //////////////////////////////////////////////////////////////////////
    #include <string>
    class Ora  
    {
    	friend ostream &operator<<(ostream & , Ora &);
    public:
    	Ora();
    	virtual ~Ora();
    	int setOra(int , int );
    private:
    	int min;
    	int ore;
    	char _ora;
    };
    codice:
    // Ora.cpp: implementation of the Ora class.
    //
    //////////////////////////////////////////////////////////////////////
    #include <iostream>
    #include <iomanip>
    #include "Ora.h"
    using namespace std;
    
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
    
    Ora::Ora()
    {
    
    }
    
    Ora::~Ora()
    {
    
    }
    
    
    int Ora::setOra(int or, int mn)
    {
    	ore = or;
    	min = mn;
    	_ora = ore + ":" + min;
    	return 0;
    }
    
    ostream &operator<<(ostream &out , Ora &or)
    {
    	out << or.ore <<":"<< or.min;
    }
    Ma mi da:
    --------------------Configuration: ClassTest - Win32 Release--------------------
    Compiling...
    Ora.cpp
    C:\Progetti\ClassTest\Ora.h(7) : error C2143: syntax error : missing ';' before '&'
    C:\Progetti\ClassTest\Ora.h(7) : error C2433: 'ostream' : 'friend' not permitted on data declarations
    C:\Progetti\ClassTest\Ora.h(7) : error C2501: 'ostream' : missing storage-class or type specifiers
    C:\Progetti\ClassTest\Ora.h(7) : error C2244: 'ostream' : unable to resolve function overload
    C:\Progetti\ClassTest\Ora.h(7) : error C2061: syntax error : identifier 'ostream'
    C:\Progetti\ClassTest\Ora.h(7) : error C2501: '<<' : missing storage-class or type specifiers
    C:\Progetti\ClassTest\Ora.h(7) : error C2805: binary 'operator <<' has too few parameters
    C:\Progetti\ClassTest\Ora.cpp(28) : error C2440: '=' : cannot convert from 'char *' to 'char'
    This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    C:\Progetti\ClassTest\Ora.cpp(34) : error C2248: 'ore' : cannot access private member declared in class 'Ora'
    C:\Progetti\ClassTest\Ora.h(14) : see declaration of 'ore'
    C:\Progetti\ClassTest\Ora.cpp(34) : error C2248: 'min' : cannot access private member declared in class 'Ora'
    C:\Progetti\ClassTest\Ora.h(13) : see declaration of 'min'
    Error executing cl.exe.

    Ora.obj - 10 error(s), 0 warning(s)


    Why????????????'


    Help meeeeeeeee
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Nei prototipi delle funzioni hai messo i tipi che prendono in entrata ma non gli hai dato un nome...


  3. #3
    nn mi va lo stesso
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  4. #4
    1) Intanto questo mettilo nell`header:

    codice:
    #include <iostream>
    2) std:stream

    3) Prototipo non uguale:

    codice:
    // Ora.h
    
    friend ostream &operator<<(ostream & , Ora &)
    
    ...
    
    // Ora.cpp
    
    ostream &operator<<(ostream &out , Ora v)
    4) Questa cosa non puoi farla! E poi _ora e` char! Dichiara _ora come string e poi usi un ostringstream per accodare gli int ore e min:

    codice:
    _ora = ore + ":" + min;
    Ciao.

  5. #5
    ecco!
    Tnk, molto gentile
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.