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

[C++] - Konwersja konstruktorem

Ostatnio zmodyfikowano 2011-11-06 11:28
Autor Wiadomość
sch4b3k
Temat założony przez niniejszego użytkownika
[C++] - Konwersja konstruktorem
» 2011-11-05 18:01:33
Mam taki kod:
C/C++
#include "stdafx.h"
#include <string>
#include <iostream>
#include <cstdio>

using namespace std;

///////////////////////////////////////////////////////////////////////////////////////////////////
class numer;
class zespolona
{
private:
    double rzeczyw;
    double urojon;
public:
    zespolona( double r = 0, double i = 0 )
        : rzeczyw( r )
        , urojon( i )
    { }
    zespolona( numer );
    friend zespolona dodaj( zespolona, zespolona );
    void wyswietl()
    {
        cout << "Rzeczywista: " << rzeczyw << "\nUrojona: " << urojon << "\n";
    }
};

///////////////////////////////////////////////////////////////////////////////////////////////////

class numer
{
    double n;
    string opis;
    friend zespolona::zespolona( numer );
public:
    numer( int k, string t = "bez opisu" )
        : n( k )
        , opis( t )
    { }
};

///////////////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    zespolona pierwsza( 2, 4 ), druga( 5, 3 ), wynik;
    wynik = dodaj( pierwsza, druga );
    wynik.wyswietl();
    wynik = dodaj( pierwsza, 4.3 );
    wynik.wyswietl();
    wynik = dodaj( 3.2, druga );
    wynik.wyswietl();
    getchar();
    return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
zespolona dodaj( zespolona a, zespolona b )
{
    zespolona suma;
    suma.rzeczyw = a.rzeczyw + b.rzeczyw;
    suma.urojon = a.urojon + b.urojon;
    return suma;
}
zespolona::zespolona( numer x )
{
    rzeczyw = x.n;
    urojon = 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
Jest to przyklad z Symfonii C++ standard. Niestety mam następujące błędy:

Line 31: IntelliSense: copy constructor for class "numer" may not have a parameter of type "numer"
Line 59: IntelliSense: member "numer::n" (declared at line 29) is inaccessible
Line 31: IntelliSense: no instance of overloaded function "zespolona::zespolona" matches the specified type

Nie wiem co zrobić, żeby to działało, pomóżcie proszę.

PS. Nie wiem jak kod przedstawić w ramce w której jest kolorowa składnia.
P-43390
Drraven
» 2011-11-05 18:36:35
Zbacz kurs STC na tej stronie:
[.cpp]

class numer;
Usun to.
P-43392
DejaVu
» 2011-11-06 11:28:26
C/C++
zespolona( numer );
Przemyśl powyższy wiersz.
P-43412
« 1 »
  Strona 1 z 1