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

Problem klasa typu graf

Ostatnio zmodyfikowano 2014-01-09 07:46
Autor Wiadomość
benny
Temat założony przez niniejszego użytkownika
Problem klasa typu graf
» 2014-01-08 22:05:44
Witam
Nie potrafię zrozumieć błędu, pierwsza klasa ma tworzyć krawędzie grafu w postaci {początek, wierzchołek_1,wierzchołek_2,..}
A druga ma być listą obiektów tego typu, oto mój kod:
C/C++
template < class V >
class krawedz
{
    V a;
    V * wsk_;
public:
    krawedz( V t1, std::initializer_list < V > t2 )
        : a( t1 )
        , wsk_( new V[ t2.size() ] )
    {
        std::copy( t2.begin(), t2.end(), wsk_ );
    }
};
template < class T >
class Graph
{
    krawedz < T >* kr;
public:
    Graph( std::initializer_list < krawedz < T >> t )
        : kr( new krawedz < T >[ t.size() ] )
    {
        std::copy( t.begin(), t.end(), kr );
    }
};

int main( void )
{
    enum Country { Poland, Ukraine, Germany, USA };
    typedef Graph < Country > GC;
   
   
    Graph < Country > gc { { Poland, { Ukraine, Germany } },
        { Germany, { Poland, Ukraine, USA } },
        { USA, { Poland, Ukraine, USA } } };
   
    return 0;
.
co mówi kompilator

g++ -Wall -fexceptions  -g  -std=c++0x    -c /home/krzysztof/Programowanie_c++/Graph/main.cpp -o obj/Debug/main.o
/home/krzysztof/Programowanie_c++/Graph/main.cpp: In constructor ‘Graph<T>::Graph(std::initializer_list<krawedz<T> >) [with T = main()::Country]’:
/home/krzysztof/Programowanie_c++/Graph/main.cpp:37:35:   instantiated from here
/home/krzysztof/Programowanie_c++/Graph/main.cpp:23:29: error: no matching function for call to ‘krawedz<main()::Country>::krawedz()’
/home/krzysztof/Programowanie_c++/Graph/main.cpp:23:29: note: candidates are:
/home/krzysztof/Programowanie_c++/Graph/main.cpp:11:1: note: krawedz<V>::krawedz(V, std::initializer_list<_Tp>) [with V = main()::Country]
/home/krzysztof/Programowanie_c++/Graph/main.cpp:11:1: note:   candidate expects 2 arguments, 0 provided
/home/krzysztof/Programowanie_c++/Graph/main.cpp:6:7: note: constexpr krawedz<main()::Country>::krawedz(const krawedz<main()::Country>&)
/home/krzysztof/Programowanie_c++/Graph/main.cpp:6:7: note:   candidate expects 1 argument, 0 provided
/home/krzysztof/Programowanie_c++/Graph/main.cpp:6:7: note: constexpr krawedz<main()::Country>::krawedz(krawedz<main()::Country>&&)
/home/krzysztof/Programowanie_c++/Graph/main.cpp:6:7: note:   candidate expects 1 argument, 0 provided
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings (0 minutes, 0 seconds)
.
Dzięki za pomoc
P-101648
Monika90
» 2014-01-09 07:46:03
new krawedz < T >[ t.size() ] )
To używa konstruktora domyślnego do zainicjalizowania elementów tablicy, ale krawedz nie ma konstruktora domyślnego.
P-101653
« 1 »
  Strona 1 z 1