Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++11]Undefined reference to ''

Pagina: 1
Acties:

  • dragon9114
  • Registratie: Augustus 2005
  • Laatst online: 06-11 09:31
Beste tweakers,

Op dit moment ben ik bezig met het leren van programmeren in C++ en ik loop tegen het volgende probleem aan.
Ik heb een voorbeeld uit het boek "Aan de slag met C++ vijfde druk" over getypt zodat ik deze later kan aan passen, maar op het moment dat ik de code probeer te compilen krijg ik de volgende errors.

C++:
1
2
3
4
5
6
7
8
9
obj\Debug\main.o||In function `main':|
G:\programmeren\c++oefening\main.cpp|42|undefined reference to `Datum::Datum(int, int, int)'|
G:\programmeren\c++oefening\main.cpp|42|undefined reference to `Student::Student(std::string, std::string, std::string, int, Datum const&)'|
G:\programmeren\c++oefening\main.cpp|43|undefined reference to `Datum::Datum(int, int, int)'|
G:\programmeren\c++oefening\main.cpp|43|undefined reference to `Student::Student(std::string, std::string, std::string, int, Datum const&)'|
obj\Debug\main.o||In function `ZNK4Team8toStringEv':|
G:\programmeren\c++oefening\main.cpp|35|undefined reference to `Student::toString() const'|
G:\programmeren\c++oefening\main.cpp|36|undefined reference to `Student::toString() const'|
||=== Build finished: 6 errors, 0 warnings (0 minutes, 0 seconds) ===|


de C++ code in de Main.cpp.
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
using namespace std;

class Datum{
private:
    int dag, maand, jaar;

public:
    Datum( int dag, int maand, int jaar);
    string toString() const;
};
class Student{
private:
    string naam, opleiding, geslacht;
    int nummer;
    Datum gebdat;
public:
    Student( string n, string opl, string gesl, int nr, const Datum & gbd);
    string toString() const;
};

class Team{
private:
    Student lid1, lid2;

public:
    Team( const Student & een, const Student & twee): lid1(een), lid2(twee){}

    string toString() const{
    ostringstream os;
    os << "Dit team bestaat uit:" << endl;
    os << lid1.toString() << endl;
    os << lid2.toString() << endl;
    return os.str();

    }
};
int main(){
    Student student1( "Elena", "wiskunde", "v", 201053, Datum(13, 5, 1990)),
            student2( "Lucia", "Engels", "v", 227756, Datum( 16, 4, 1991));
    Team team( student1, student2);

    cout << team.toString() << endl;

}


Ik heb al via google gezocht op de error die gegeven word maar daar kom ik alleen maar problemen tegen met losse headerfiles.
Ook heb ik delen van de code vergeleken met andere voorbeelden om te kijken of er typ fouten in zitten, maar hier kon ik ook niks geks vinden.
Het compilen van de voorbeelden die ik van internet heb gehaalt lukt wel.

De gebruike IDE is Codeblocks 12.11 op windows 7.

Dus mijn vraag is wat en waar heb ik iets fout gedaan, want ik zie het niet. :'(

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 22-11 18:52

Sebazzz

3dp

Als dit al je code is betekent dat je de methods in je Student en Datum class niet geïmplementeerd hebt. C++ kan niet raden wat je daar wilt doen.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • Ealanrian
  • Registratie: Februari 2009
  • Laatst online: 13:15
Ik mis inderdaad ook implementatie van de functies. Is het wel de bedoeling dat je dit voorbeeld al compileerd?

edit:

Er zal waarschijnlijk nog wat moeten komen bij:
[code=c++]

[/code]
Het zit ergens anders...

[ Voor 117% gewijzigd door Ealanrian op 17-10-2013 14:12 ]


  • dragon9114
  • Registratie: Augustus 2005
  • Laatst online: 06-11 09:31
als ik het boek moet geloven dan zou de uitvoer er als volgt uit moeten zien.
code:
1
2
3
4
5
6
7
8
9
Elena (13-05-1990)
wiskunde
v
201053

Lucia (16-04-1991)
engels
v
227756

  • Ealanrian
  • Registratie: Februari 2009
  • Laatst online: 13:15
Zoals ik de code lees zou dat niet gaan werken. Weet je zeker dat je niet een stukje boek heb overgeslagen. Implementatie van Datum en Student mist echt compleet

Verwijderd

Het enige wat nu bekend is bijv. dat de Datum class een methode toString() heeft. Wat je niet gedaan hebt (en waarschijnlijk gemist hebt eerder in het boek, of in een appendix dan wel online resource), is een implementatie maken voor de Datum::toString() methode.

Dat wordt dan dus zoiets:

C++:
1
2
3
4
5
std::string Datum::toString() const
{
    std::string datumString = ...; 
    return datumString;
}

  • dragon9114
  • Registratie: Augustus 2005
  • Laatst online: 06-11 09:31
Bedankt iedereen ! :D
Er miste inderdaad een heel stuk code dat uit een voorbeeld van het vorige hoofdstuk gehaalt moest worden.

weer wat geleerd.

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Datum{
private:
    int dag, maand, jaar;

public:
    Datum( int dag, int maand, int jaar)
    : dag(dag), maand(maand), jaar(jaar){}

  string toString() const {
    ostringstream os;
    os << setfill( '0' ) << setw( 2 ) << dag << '-'
       << setw( 2 ) << maand << '-' << setw( 4 ) << jaar;
    return os.str();
  }
};
class Student{
private:
    string naam, opleiding, geslacht;
    int nummer;
    Datum gebdat;
public:
    Student( string n, string opl, string gesl, int nr, const Datum & gbd)
    :naam(n), opleiding(opl), geslacht(gesl), nummer(nr), gebdat(gbd){}


    string toString() const{
        ostringstream os;
        os << naam << "(" <<gebdat.toString() << ")" << endl;
        os << opleiding << endl;
        os << geslacht << endl;
        os << nummer << endl;
        return os.str();
    }
};
Pagina: 1