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

undefined reference to '...'

Ostatnio zmodyfikowano 2017-08-14 20:05
Autor Wiadomość
Rashmistrz
Temat założony przez niniejszego użytkownika
undefined reference to '...'
» 2017-08-14 16:54:17
console.hpp:
C/C++
#include <curses.h>
#include <string>
using std::string;

class Console
{
private:
    Console();
    ~Console();
   
    static WINDOW * cmd;
    static WINDOW * con;
   
    typedef void( * handler )( string );
    static handler command; // hook to interpreter, should return asap
   
public:
    static string set_prompt( string );
    static Console & get()
    {
        static Console singleton;
        return singleton;
    }
   
    static void run( handler ); // starts command interpreting session
    static void log( string ); // makes output to console
    static string ask( string ); // takes input from user on demand
    static string ask_for_password( string ); // stars instead of chars
};

console.cpp:
C/C++
#include "console.hpp"

Console::Console()
{
    initscr();
    cmd = newwin( 2 * LINES, COLS, - LINES - 1, 0 );
    con = newwin( 1, COLS, LINES - 1, 0 );
    wmove( cmd, 0, 0 );
    wmove( con, 2 * LINES, 0 );
}

Console::~Console()
{
    delwin( cmd );
    delwin( con );
    endwin();
}

void Console::log( string str )
{
    printw( str.c_str() );
    refresh();
}

main.cpp:
C/C++
#include "console.hpp"

int main()
{
    Console & console = Console::get();
    console.log( "Hello World !!!" );
    return 0;
}

idk what to do...

obj\console.o:console.cpp:(.rdata$.refptr._ZN7Console3conE[.refptr._ZN7Console3conE]+0x0): undefined reference to `Console::con'
obj\console.o:console.cpp:(.rdata$.refptr._ZN7Console3cmdE[.refptr._ZN7Console3cmdE]+0x0): undefined reference to `Console::cmd'
P-163969
Kinexity
» 2017-08-14 17:39:11
Przed main wstaw :

C/C++
WINDOW Console::* con, Console::* cmd;
P-163970
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2017-08-14 18:18:22
Przed main wstaw
To samo(?):
obj\console.o:console.cpp:(.rdata$.refptr._ZN7Console3conE[.refptr._ZN7Console3conE]+0x0): undefined reference to `Console::con'
obj\console.o:console.cpp:(.rdata$.refptr._ZN7Console3cmdE[.refptr._ZN7Console3cmdE]+0x0): undefined reference to `Console::cmd'
P-163971
Kinexity
» 2017-08-14 18:53:53
Mogłem pomylić się. Spróbuj wrzucić do console.cpp zamiast  przed main.
P-163972
Luq
» 2017-08-14 19:43:40
WINDOW * Console::cmd, * Console::con;

To dodaj do console.cpp
P-163974
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2017-08-14 19:43:45
Kompilator nie krzyczy o braku deklaracji,
tylko linker coś wrzeszczy, że mi aż w uszach dzwoni...
ale i tak nie rozumiem co on dostaje nie tak.

EDIT: Luq? To działa, ale nie rozumiem dlaczego.
P-163975
Luq
» 2017-08-14 19:51:37
P-163976
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2017-08-14 20:05:00


Do console.cpp dodałem odpowiednie definicje po include'zie:
C/C++
WINDOW * Console::cmd;
WINDOW * Console::con;

typedef void( * handler )( string );
handler Console::command;

Tak, to było to. Dziękuję serdecznie. C:
P-163978
« 1 »
  Strona 1 z 1