Problem klasa typu graf
Ostatnio zmodyfikowano 2014-01-09 07:46
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: 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 |
|
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. |
|
« 1 » |