WT: WContainerWidget объект, вызывающий ошибку компиляции - PullRequest
0 голосов
/ 06 ноября 2018

В настоящее время я пытаюсь познакомиться с Webtoolkit от Emweb (Wt или "Witty). В качестве своего первого проекта я решил написать риторическую домашнюю страницу компании. Но когда я попытался реализовать какую-то систему управления контентом, Visual Studio Поведение стало совершенно странным. Было много ошибок, все естественно, поэтому я закомментировал все строки кода до минимума, чтобы заставить его скомпилировать и выяснить мою ошибку. Я слепой или его просто нет? код моих 3 объектов, строка, вызывающая ошибку, прокомментирована:

main.cpp:

int main(int argc, char *argv[]) {
    return Wt::WRun(argc, argv, [](const Wt::WEnvironment &env) {
        auto app = std::make_unique<Wt::WApplication>(env);

        //>>loading layout.xml for page-layout
        app->messageResourceBundle().use("approot/layout");

        app->messageResourceBundle().use("approot/strings_de");
        //>>loading strings_de.xml for messages
        app->useStyleSheet("docroot/style.css");
        //>>loading style.css for used stylesheet
        app->root()->addNew<TLayout>();

        return app;
    });

}

CHeadline.h:

class CHeadline : public WContainerWidget
{
public:
    CHeadline();

private:
    WImage* Game_Logo;
    WImage* Corner_Image;
};

CHeadline.cpp:

#include "CHeadline.h"

CHeadline::CHeadline()
{
    this->setStyleClass("headline");
    Game_Logo = addWidget(make_unique<WImage>("image/game_logo.png"));
    Game_Logo->setStyleClass("logo");

    Corner_Image = addWidget(make_unique<WImage>("image/right_corner.png"));
    Corner_Image->setStyleClass("img_hl");
}

CNavbar.h:

class CNavbar : public Wt::WContainerWidget
{
public:
    CNavbar();
    ~CNavbar();

private:
    WPushButton* b_news;
    WPushButton* b_webdev;
    WPushButton* b_projects;
    WPushButton* b_media;
    WPushButton* b_shop;
    WPushButton* b_about;
};

CNavbar.cpp:

CNavbar::CNavbar()
{
    this->setStyleClass("navbar");

    //INIT_BUTTONS:*****///

    b_news = addWidget(make_unique<WPushButton>(tr("str.news")));

    b_webdev = addWidget(make_unique<WPushButton>(tr("str.webdev")));

    b_projects = addWidget(make_unique<WPushButton>(tr("str.projects")));

    b_media = addWidget(make_unique<WPushButton>(tr("str.media")));

    b_shop = addWidget(make_unique<WPushButton>(tr("str.shop")));

    b_about = addWidget(make_unique<WPushButton>(tr("str.about")));
}

А вот Layout-Template, который объединяет все:

TLayout.h:

class TLayout : public WTemplate
{
public:
    TLayout();
    ~TLayout();
    enum SECTION { NEWS, DEV, PROJ, MEDIA, SHOP, CONTACT };
    void setSection(SECTION aSec);

private:
    //Adding Widget for the Headline (Logo + Corner Image)
    CHeadline* wHeadline;
    CNavbar* wNavbar; //PROBLEM-LINE
    SECTION currentSec;
};

TLayout.cpp:

TLayout::TLayout() : WTemplate { tr("tpl.layout") }
{
    currentSec = NEWS; //Standard-Wert für Section
    this->setStyleClass("bglayout");

    wHeadline = bindWidget("HEADLINE", make_unique<CHeadline>());
    wNavbar = bindWidget("NAVIGATION", make_unique<CNavbar>()); //PROBLEM?
}

void TLayout::setSection(SECTION aSec) {
}

Учитывая, что все Включения и Пространства имен правильные, почему он не скомпилируется? Visual Studio выдает мне следующие ошибки:

tlayout.h (38): Unexpected Token before ";"
tlayout.h (38): Syntaxerror. ";" missing before "*"
tlayout.h (38): Missing Type-Specification
...