Re: Сокрытие не-public членов классов
От: MaximE Великобритания  
Дата: 22.01.03 08:01
Оценка: 2 (1)
Здравствуйте, Сray, Вы писали:

С>Я, конечно, понимаю, что можно все необходимые include засунуть в "someclass.h". Собственно, так обычно и делаю. Но может есть какие-нибуть другие варианты покрасивей?

С>Если SomeClass есть часть какой-то библиотеки, то получается, что чтобы использовать ее нужно перечислить кучу заголовочных файлов предназначенных "для внутреннего использования" внутри класса.
С>Sorry если вопрос глупый

Используй идиому Pimpl.


///////////////////////////////////////////////////////////////////////////////
// DataMapper.h

#pragma once

#include "Reference.h"

class DataMapper : public Reference
{
public:
    DataMapper();
    ~DataMapper();
    // ...
private:
    std::auto_ptr<struct DataMapperImpl> _pimpl; // непрозрачный указатель на реализацию
};



///////////////////////////////////////////////////////////////////////////////
// DataMapper.cpp

#include "stdafx.h"
#include "DataMapper.h"

using namespace ADODB;
using namespace std;

///////////////////////////////////////////////////////////////////////////////

struct DataMapperImpl
{
    DataMapperImpl() : _connection(__uuidof(Connection))
    {
        _connection->Open(sqlConnection, _bstr_t(), _bstr_t(), adConnectUnspecified);
    };

    _ConnectionPtr _connection;
};

///////////////////////////////////////////////////////////////////////////////

DataMapper::DataMapper()
    :    _pimpl(new DataMapperImpl)
{
}

///////////////////////////////////////////////////////////////////////////////


Подробнее: Compilation Firewalls
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.