Wpis z mikrobloga

Dlaczego w klasie Package wymagany jest ode mnie defaultowy constructor objektu File??
,,no default contructor exist for class ''File'' "
Zalezy mi zeby go tam nie bylo bo metody pracują na Objekcie ,,File''

w headerze Package deklaruje:
public: Package(File file);

http://pastebin.com/G3g7qGAz
#programowanie #cpp
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@phatee93:

Package::Package(File file){

konstruktor Package przyjmuje jako parametr obiekt file, przez wartość. czyli obiekt który podajesz jest kopiowany do kopi lokalnej konstruktora Package. musisz dostarczyć kopiujący konstruktor dla klasy File lub przekazywać ją jako referencję.
  • Odpowiedz
@phatee93: Learn how to initlization list. Gdy w klasie stworzysz atrybut o klasie File to każdy konstruktor bez wymienionego tego atrybutu na liście inicjalizacyjnej będzie używał domyślnego konstruktora którego klasa File nie posiada (zawiera jakikolwiek inny konstruktor).
  • Odpowiedz
@kalectwo, @phatee93: w Javie też nie musisz. Niech robi tak jak woli. W Cpp masz te listy inicjalizujące, o których wcześniej wspominał @lionbest, dlatego częściej używa się ich zamiast przypisania wartości w konstruktorze. Nie oznacza to jednak, że "this->member" jest w czymkolwiek gorsze od "member". Jeśli masz jakiś lepszy argument od "tak się nie robi (według mnie)", to podziel się nim z nami :)
  • Odpowiedz