Boost внезапно попадает в мое пространство имен, требуя ошибок из-за отсутствия функций - PullRequest
1 голос
/ 27 января 2012

В этом новом эпизоде ​​саги «Me vs Boost, libconfig, буфер протоколов и glog» мы обнаруживаем, что наш главный герой (я) сражается с Boost в отчаянной битве за владение пространством имен!.

Ну, я использовал этот красивый код:

server.h

#ifndef SERVER_H
#define SERVER_H 1

#include "configuration.h"
#include "client.h"
#include "client_manager.h"
#include <string>
#include <boost/noncopyable.hpp>
#include <boost/asio.hpp>
#include <boost/thread.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>

namespace BBCP {
    namespace Server {

class Server : private boost::noncopyable {
public:
    Server(BBCP::App::Config const &wrapper) :
        acceptor(io_service),
        wrapper(wrapper)
        //signals(io_service),
        { }
    void run();
protected:
    void acceptHandler(boost::system::error_code const &error);
    void startAccept();
    void stopServer();
private:
    boost::asio::io_service io_service;
    boost::asio::ip::tcp::acceptor acceptor;
    boost::asio::ip::tcp::endpoint endpoint;
    //boost::asio::signal_set signals;

    BBCP::Server::client_ptr newClient;
    BBCP::Server::ClientManager manager;

    boost::thread_group client_pool;
    BBCP::App::Config wrapper;
};

    }
}

#endif

для нескольких сборок сейчас, и все работало хорошо, пока после ... ну,вообще ничего, он начал выдавать ошибку:

In file included from /usr/include/boost/type_traits/has_nothrow_constructor.hpp:12:0,
                 from /usr/include/boost/optional/optional.hpp:25,
                 from /usr/include/boost/optional.hpp:15,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:13,
                 from /usr/include/boost/thread/thread.hpp:17,
                 from /usr/include/boost/thread.hpp:13,
                 from ../include/server.h:10,
                 from main.cpp:17:
/usr/include/boost/type_traits/has_trivial_constructor.hpp:36:1: error: ‘has_trivial_ctor_impl’ is not a member of ‘boost::detail’
/usr/include/boost/type_traits/has_trivial_constructor.hpp:36:1: note: suggested alternative:
/usr/include/boost/type_traits/has_trivial_constructor.hpp:25:8: note:   ‘BBCP::Server::boost::detail::has_trivial_ctor_impl’

(...) This goes on and on with a lot of dependencies.

Теперь, как я вижу, BBCP::Server::boost::detail::has_trivial_ctor_impl относится к некоторому методу, определенному в boost::detail.Суть в том, что boost::detail не должно попадать в мое пространство имен, BBCP::Server!.

Если честно, я не вижу, откуда появилась эта ошибка, поэтому ...

Любая помощь будет оценена!,

Джулиан.

1 Ответ

2 голосов
/ 27 января 2012

Вероятно, ошибка в одном из заголовков, которые вы включили до , которая не закрывала пространство имен должным образом.

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