Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

C++ - Class - No default constructor exists

Af Nørd Aspirant Weide | 29-12-2021 21:12 | 3383 visninger | 12 svar, hop til seneste
Hej venner! Jeg har nu siddet og kigget på den her kode længe og kan simpelthen ikke finde ud af hvad det er jeg mangler... Den skriver No default constructor exists for class "Konsulenttime" Jeg har lavet en class ved navn Konsulenttime, kørt test program og alt virker. Nu skal jeg så udvide med en class der hedder Arbejdsdag, hvor den brokker sig over nogen i min ?Konsulenttime class... Class Konsulenttime - https://ibb.co[...] Class Arbejdsdag - https://ibb.co[...] Funktions Arbejdsdag - https://ibb.co[...] Nogen der eventuelt har et eller andet man kunne prøve her?
--
I5 2500K 3.3 GH--P8P67 PRO--GTX 670--Samsung 840 500 GB--Western Digital Black 500GB-Seagate 2TB-Cool master 700 Watt--8GB 1600 Kingston Hyperx
#1
stallemanden
HOL Moderator
29-12-2021 21:18

Rapporter til Admin
A default constructor is a constructor which can be called with no arguments (either defined with an empty parameter list, or with default arguments provided for every parameter)
--
https://onsdagssnegl.dk[...] "Held er noget, der indtræffer, når grundige forberedelser mødes med gunstig lejlighed"
#2
Frank
Gæst
29-12-2021 21:19

Rapporter til Admin
Som fejlbeskeden fortæller dig så har du ingen default konstruktør ;-) En default konstruktør er en uden parameter, så du mangler : konsulenttime(); <- default Mvh Frank
--
Gæstebruger, opret dit eget login og få din egen signatur.
#3
Weide
Nørd Aspirant
29-12-2021 21:21

Rapporter til Admin
Så jeg skal bare lave en Arbejdsdag(); inde i min Arbejdsdag class? Er lidt i tvivl om hvad jeg skal skrive i funktions folder så?
--
I5 2500K 3.3 GH--P8P67 PRO--GTX 670--Samsung 840 500 GB--Western Digital Black 500GB-Seagate 2TB-Cool master 700 Watt--8GB 1600 Kingston Hyperx
#4
Frank
Gæst
29-12-2021 21:23

Rapporter til Admin
Hvis din klasse ikke giver mening med en constructor uden parameter, så må du jo lade være med at bruge den. Dvs. kun bruge den med parameterne. ala New Konsulenttime(1,45 , 100, 600) etc
--
Gæstebruger, opret dit eget login og få din egen signatur.
#5
Frank
Gæst
29-12-2021 21:24

Rapporter til Admin
Må jeg spørge hvorfor du bruger c++, java og c# er noget lettere at komme i gang med Mvh Frank
--
Gæstebruger, opret dit eget login og få din egen signatur.
#6
InFerNo
Guru
29-12-2021 21:25

Rapporter til Admin
Jeg tror fejlen opstår i linien konsultnttime timer_[8] der bruger du konsulent konstruktør uden parametre.
--
Overclocked Broadwell-E/Pascal Inside!
#7
Weide
Nørd Aspirant
29-12-2021 21:27

Rapporter til Admin
#4 Undre mig bare over hvorfor den brokkede sig sådan pludselig, kunne ikke forstå hvorfor den ikke ville fungere uden. Det er en øvelse opgave fra studiet, kunne se lærer ikke en gang selv havde taget højde for den lille fejlmelding.. Men løste problemet med at lave en default constructor med nogle tomme felter i. - Man kan jo ikke tage højde for om navnet eksempelvis er forkert ;-)
--
I5 2500K 3.3 GH--P8P67 PRO--GTX 670--Samsung 840 500 GB--Western Digital Black 500GB-Seagate 2TB-Cool master 700 Watt--8GB 1600 Kingston Hyperx
#8
LgT
Mega Supporter
29-12-2021 22:20

Rapporter til Admin
Hmm - tror dårligt jeg kan huske at have set trailing underscores. Prefixed giver fordel til intellisense, så det kan jeg leve med. Derudover er din indsætKonsulenttime i Arbejdsdag: 1) forkert cased. 2) mangler navn til parameter KonsulentTime - det BURDE give en fed fejl - og nok den du 'søger'. Det er helt legalt at have en klasse uden default /parameterløs constructor. @6 mht "konsultnttime timer_[8]" - det er ikke en constructor, blot en deklaration af en variabel ;-)
--
Sidst redigeret 29-12-2021 22:21
#9
Wut
Semi Nørd
29-12-2021 22:39

Rapporter til Admin
#8 Bliver der ikke skabt 8 instanser af klassen Konsullenttime i "Konsulenttime timer_[8];" ? Hvis ikke constructoren bliver kald ved instantiering, hvornår skulle den så blive kaldt? Med den antagelse, at default constructoren rent faktisk fandtes...
--
Ignorer gæster eller udvalgte brugere, se: https://www.hardwareonline.dk[...]
--
Sidst redigeret 29-12-2021 22:43
#10
LgT
Mega Supporter
29-12-2021 23:04

Rapporter til Admin
#9 jeg har muligvis husket forkert grundet at jeg normalt arbejder C# :-). Men DER er der er forskel på: Konsulenttime timer_[8] = new Konsulenttime[8]; (deklaration + allokering) og Konsulenttime timer_[8]; (kun deklaration).
--
Sidst redigeret 29-12-2021 23:05
#11
Wut
Semi Nørd
29-12-2021 23:15

Rapporter til Admin
#10 I C++ kan man ikke deklarere objekter uden at kalde constructoren. I C++ returnerer "new" en pointer til objektet. Dvs: minKlasse* minPointer; minPointer = new minKlasse(); // paranteser kan udelades ved default constructoren Eller bare: mitObjekt = minKlasse(); Begge måder instantierer (kalder constructoren), men den øverste metode giver mulighed for at oprette pointeren (eller en vilkårlig struktur af pointere) først, og senere kan man instantiere objekterne, eller man kan skyde sig selv i foden og ad-hoc instantiere nye objekter ovenpå eksisterende pointere og glemme at dekonstruere de tidligere objekter, så man har sig et saftigt memory leak og noget at glæde sig til at debugge en anden god gang. ;) C++ er for rigtige mænd med tungen lige i munden (eller tilstrækkeligt meget RAM). ;)
--
Ignorer gæster eller udvalgte brugere, se: https://www.hardwareonline.dk[...]
--
Sidst redigeret 29-12-2021 23:19
#12
Weide
Nørd Aspirant
30-12-2021 16:55

Rapporter til Admin
#11 Nu er jeg kun på 1. semester og har allerede formået at glemme så simple commands som Scanf_s og Printf_s om der skal sættes "&" eller ikke i variablen osv... Ærligt så synes jeg indtil videre C++ er mere lige til end omvendt, men man kan så også fuck meget mere op. ;-)
--
I5 2500K 3.3 GH--P8P67 PRO--GTX 670--Samsung 840 500 GB--Western Digital Black 500GB-Seagate 2TB-Cool master 700 Watt--8GB 1600 Kingston Hyperx

Opret svar til indlægget: C++ - Class - No default constructor exists

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning