logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott McCaskill" <scott.mccask...@gmail.com>
Subject ObjectPtrT::operator-> const problem
Date Wed, 07 Nov 2007 21:39:42 GMT
I've noticed the const version of this method is returning a pointer to
const.  The reason this is a problem is that it makes it impossible to log
from const methods when LoggerPtr is a member variable:

class C
{
    public:
        C() : logger(log4cxx::Logger::getLogger("my logger")) { }

        void constMethod() const
        {
            // Error: can't do this because the const version of
ObjectPtrT::operator->()
            // must be used, and it returns a pointer to const T.
            LOG4CXX_DEBUG(logger, "debug message");
        }

    private:
        log4cxx::LoggerPtr logger;
};

In both versions of operator->, the ObjectPtrT itself cannot be modified, so
it's not clear why there is a need for a non-const version, or for a version
that returns a pointer to const.  It seems that in this case, the notion of
pointer constness is being conflated with the notion of pointee constness.

Surely the above example is not such an unreasonable a thing to expect to be
able to do? :)

BTW, I wasn't sure whether this was more appropriate for the user list or
the dev list (I'm subscribed to both).

Scott McCaskill

Mime
View raw message