Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Własna biblioteka statyczna, Definicja metody w pliku cpp

Ostatnio zmodyfikowano 2014-08-17 17:30
Autor Wiadomość
ggerek
Temat założony przez niniejszego użytkownika
Własna biblioteka statyczna, Definicja metody w pliku cpp
» 2014-08-17 15:37:22
Kawałki kodu :
podstawa.hpp
C/C++
class Swiat
{
public:
    int g;
   
    void stworz( const Vector2d & grawitacja );
};

swiat.cpp
C/C++
#include "podstawa.hpp"

void Swiat::stworz( const Vector2d & grawitacja )
{
    g = grawitacja.y;
}
Plik testowy
main.cpp
C/C++
#include <easy2d.hpp>

int main()
{
    Vector2d grawitacja( 0, 10 );
    Swiat swiat;
    swiat.stworz( grawitacja );
    StatycznyObjekt ziema;
}
Dostaje błąd przy kompilacji pliku testowego undefined reference to `Swiat::stworz(Vector2d const&)
P-115610
1aam2am1
» 2014-08-17 15:50:36
main.cpp
#include "podstawa.hpp" ?
P-115614
pekfos
» 2014-08-17 15:50:51
Linkujesz tę bibliotekę?
P-115615
ggerek
Temat założony przez niniejszego użytkownika
» 2014-08-17 16:17:20
Zapomniałem dać w poprzednim poście
#include "podstawa.hpp"
Już z edytowałem.
Oczywiście zlinkowałem bibliotekę, w między czasie szukając rozwiązania zupełnie innego problemu czytałem, że w takim przypadku jak ja mam podstawa.hpp nie wie gdzie szukać definicji metody. 
P-115620
pekfos
» 2014-08-17 16:30:21
czytałem, że w takim przypadku jak ja mam podstawa.hpp nie wie gdzie szukać definicji metody. 
To musiałeś źle zrozumieć. Podaj kompletne logi.
P-115621
ggerek
Temat założony przez niniejszego użytkownika
» 2014-08-17 16:34:19
||=== Build: Debug in easy2d-test (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `main':|
F:\easy2d\easy2d-test\easy2d-test\main.cpp|8|undefined reference to `Swiat::stworz(Vector2d const&)'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Gdy miałem definicje metody
Swiat::stworz( Vector2d const & grawitacja )
 w podstawa.hpp to wszystko działało, a gdy przeniosłem ją do swiat.cpp to jest to co jest teraz
P-115622
Jacob99
» 2014-08-17 16:37:57
Podaj pełny kod z wszystkich plików.
P-115624
ggerek
Temat założony przez niniejszego użytkownika
» 2014-08-17 16:41:16
Biblioteka statyczna :

podstawa.hpp
C/C++
class Vector2d
{
public:
    int x;
    int y;
   
    Vector2d( int x, int y )
        : x( x )
         , y( y )
    {
       
    }
   
};

class Zjawisko
{
   
};

class Wiatr
    : private Zjawisko
{
   
};

class Swiat
{
public:
    int g;
   
    void stworz( const Vector2d & grawitacja );
};

class Objekt
{
public:
    int x;
    int y;
    void wymiary( int x, int y );
};
class StatycznyObjekt
    : private Objekt
{
public:
    int m;
};
class DynamicznyObjekt
    : private Objekt
{
public:
    int m;
    int V;
};

swiat.cpp
C/C++
#include "podstawa.hpp"

void Swiat::stworz( const Vector2d & grawitacja )
{
    g = grawitacja.y;
}

easy2d.hpp
C/C++
#include "podstawa.hpp"

Program testowy:

main.cpp
C/C++
#include <easy2d.hpp>
#include <iostream>

int main()
{
    Vector2d grawitacja( 0, 10 );
    Swiat swiat;
    swiat.stworz( grawitacja );
    StatycznyObjekt ziema;
}
P-115625
« 1 » 2 3
  Strona 1 z 3 Następna strona