@Zhyki
Ничерта не понимаю

Страуструп,глава 12, как исправить код?

Дошел до главы 12 (Програмирование,принципы и практика использования) , раздел вывод на экран. Код у него немного переделан под свой лад,для чего у него сделаны свои заголовочные файлы. Ок,скачал с сайта,включил в проект,установил FLTK, проверил FLTK - работает. Собственно на первой же строке кода из книги- работа закончилась.

Ошибка	1	error LNK2001: неразрешенный внешний символ ""protected: virtual void __thiscall Graph_lib::Window::draw(void)" (?draw@Window@Graph_lib@@MAEXXZ)"
	C:\Users\WTF\documents\visual studio 2013\Projects\ConsoleApplication2\testing\testing.obj	testing

Ошибка	2	error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Simple_window::Simple_window(struct Point,int,int,class std::basic_string<char,struct std::char_traits<char>,
class std::allocator<char> > const &)" (??0Simple_window@@QAE@UPoint@@HHABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в
 функции _main	C:\Users\WTF\documents\visual studio 2013\Projects\ConsoleApplication2\testing\testing.obj	testing


Вопрос - в чем проблема может быть? Думал не хватает какого то объявления - посмотрел.все файлы на месте,объявления вроде тоже.
Не знаю как удобнее выложить код,ибо файлов включаемых несколько. Вот куски кода объявлений функций,указанных в ошибке:

Simple_window (Simple_window.h) :
using namespace Graph_lib;

struct Simple_window : Graph_lib::Window {
    Simple_window(Point xy, int w, int h, const string& title );

    bool wait_for_button(); // simple event loop

private:
    Button next_button;     // the "next" button
    bool button_pushed;     // implementation detail

    static void cb_next(Address, Address); // callback for next_button
    void next();            // action to be done when next_button is pressed

};


Simple_window (Simple_window.cpp):

Simple_window::Simple_window(Point xy, int w, int h, const string& title) :
    Window(xy,w,h,title),
    next_button(Point(x_max()-70,0), 70, 20, "Next", cb_next),
    button_pushed(false)
{
    attach(next_button);
}


Simple_window наследуется от Window, его код из .h и .cpp соответственно:
class Window : public Fl_Window { 
    public:
        // let the system pick the location:
        Window(int w, int h, const string& title);
        // top left corner in xy
        Window(Point xy, int w, int h, const string& title);    

        virtual ~Window() { }

        int x_max() const { return w; }
        int y_max() const { return h; }

        void resize(int ww, int hh) { w=ww, h=hh; size(ww,hh); }

        void set_label(const string& s) { copy_label(s.c_str()); }

        void attach(Shape& s) { shapes.push_back(&s); }
        void attach(Widget&);

        void detach(Shape& s);     // remove s from shapes 
        void detach(Widget& w);    // remove w from window (deactivates callbacks)

        void put_on_top(Shape& p); // put p on top of other shapes

    protected:
        void draw();

    private:
        vector<Shape*> shapes;     // shapes attached to window
        int w,h;                   // window size

        void init();
    };


Window::Window(int ww, int hh, const string& title)
:Fl_Window(ww,hh,title.c_str()),w(ww),h(hh)
{
	init();
}

Window::Window(Point xy, int ww, int hh, const string& title)
:Fl_Window(xy.x,xy.y,ww,hh,title.c_str()),w(ww),h(hh)
{ 
	init();
}

void Window::init()
{
   resizable(this);
   show();
}
  • Вопрос задан
  • 689 просмотров
Пригласить эксперта
Ответы на вопрос 2
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
метод void draw() не описан в window.cpp
Ответ написан
@Zhyki Автор вопроса
Ничерта не понимаю
Попробовал закомментить protected - та же ошибка,но с public .Вызовов данного метода вообще не нашел,только определение Git с плоным кодом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы