Использование сессий с fastcgi ++ - PullRequest
1 голос
/ 16 июня 2011

У меня проблемы с использованием сеансов с fastcgi ++ 2 beta.

Вот мой код:

#include <fastcgi++/http.hpp>
#include <fastcgi++/request.hpp>
#include <fastcgi++/manager.hpp>
#include <string>

using namespace std;
using namespace Fastcgipp::Http;

class SessionsPage : public Fastcgipp::Request<char> {
    static Sessions<string> sessions;
    Sessions<string>::iterator session;

    bool response() {
        sessions.cleanup();

        out << "Content-Type: text/html;\r\n\r\n";
        out << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" << std::endl;
        out << "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\" >" << std::endl;
        out << "    <head>" << std::endl;
        out << "        <title>Sessions</title>" << std::endl;
        out << "        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />" << std::endl;
        out << "    </head>" << std::endl;
        out << "    <body>" << std::endl;
        out << "        <p>Hello World!</p>" << std::endl;
        out << "    </body>" << std::endl;
        out << "</html>" << std::endl;
        return true;
    }
};

int main() {
    Fastcgipp::Manager<SessionsPage> fcgi;
    fcgi.handler();
}

Я получил следующую ошибку:

/tmp/ccRujo45.o: In function `SessionsPage::response()':
sessions_page.cpp:(.text._ZN12SessionsPage8responseEv[SessionsPage::response()]+0xd): undefined reference to `SessionsPage::sessions'
collect2: ld a retourné 1 code d'état d'exécution

Если я прокомментирую эту строку, она скомпилирует:

sessions.cleanup();

Я использую этот урок .

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 16 июня 2011

static Sessions<string> sessions; объявлен только в классе;вам нужно создать определение для него.В этом случае я считаю, что придерживаться Sessions<string> SessionsPage::sessions; после вашего класса хорошо, учитывая, что класс используется только в одной единице перевода.(Если вы используете его в нескольких единицах перевода, статическая переменная должна быть определена в одной и только в одной единице перевода)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...