Gå til innhold

Får feilmelding når jeg skal kjøre program


Anbefalte innlegg

Videoannonse
Annonse
Du må nok bruke if og litt sånt ja, hvis du vil ha det til at man får ut informasjon om en person ved å skrive inn et navn

 

Hvis du er interessert, så kan godt skrive et eksempel på hva du kan gjøre for å oppnå det du i utgangspungtet ville.

Det hadde vært supert! :thumbs:

Lenke til kommentar

Først og fremst bør main returnere noe. Det vanligste er åpenbart 0.

Neste feil er at du lager en char og skal putte mange tegn inn i den. Ganske usikker på hvordan det går.

 

Mener bestemt at standarden ikke krever returverdi fra main. Men det er jo sant at de fleste velger å returnere 0.

Lenke til kommentar
Mener bestemt at standarden ikke krever returverdi fra main. Men det er jo sant at de fleste velger å returnere 0.

Delvis sant. main() skal returnere et heltall, men det trenger ikke å være 0 selv om programmet har kjørt feilfritt. Dette er i utgangspunktet plattformbestemt, og det er lurt å følge konvensjonen plattformen bruker.

Lenke til kommentar

Sånn. Fikk rota sammen et lite eksempel her nå. Er vel egentlig ikke slik jeg ville gjort det i og med at det blir vanskelig å vedlikeholde hvis man vil legge til flere personer, andre funksjoner, osv. men.. Kan godt

slenge inn et eksempel som er lettere å vedlikeholde hvis du vil det. :)

 

main.cpp:

#include <iostream>
#include <string>

#include "person.hpp"

using namespace std;

int main()
{
Person jarle, kjartan;

jarle.name = "Jarle";
jarle.age = 25;
jarle.weight = 76;

kjartan.name = "Kjartan";
kjartan.age = 22;
kjartan.weight = 86;

cout << "Skriv inn navn: ";
string name;
getline(cin, name);

Person* ptp = 0;
if(name == jarle.name) 
 ptp = &jarle;
else if(name == kjartan.name)
 ptp = &kjartan;
else
 cout << "Fant ingen person med navn " << name << endl;;

if(ptp)
 cout << "\nName:\t" << ptp->name
   << "\nAge:\t" << ptp->age
   << "\nWeight\t" << ptp->weight << endl << endl;

return 0;
}

 

person.hpp:

#ifndef _person_hpp_
#define _person_hpp_

#include <string>

struct Person
{
std::string name;
int age;
int weight;
};

#endif

Lenke til kommentar
Mener bestemt at standarden ikke krever returverdi fra main. Men det er jo sant at de fleste velger å returnere 0.

Delvis sant. main() skal returnere et heltall, men det trenger ikke å være 0 selv om programmet har kjørt feilfritt. Dette er i utgangspunktet plattformbestemt, og det er lurt å følge konvensjonen plattformen bruker.

Du sier feil. main() skal returnere et heltall, men du trenger ikke gjøre det selv, da den automatisk returnerer 0 om den når slutten. Eldre kompilatorer vil kanskje gi deg en advarsel om du utelater return ved slutten av main(), men i følge standarden er det ikke nødvendig.

 

Om du nekter å tro det, kan du selv slå opp i standarden på paragraf 3.6.1, punkt nummer 5.

Endret av Geofrank
Lenke til kommentar

Jepp, ser ut til at det stemmer.

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, world!\n";
}

Prøvde å kompilere med og uten -ansi parameteret:

g++ testfil.cpp -o testfil

Funker fint, og

g++ -ansi testfil.cpp -o testfil

funker også fint.

 

..Det som var litt merkelig var at jeg ikke fikk noen advarsel, selv da jeg kompilerte med -Wall...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...