[
https://issues.apache.org/jira/browse/XERCESC-1867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12703933#action_12703933
]
David Bertoni commented on XERCESC-1867:
----------------------------------------
The purpose of the extra CV-qualifier in the source file is to keep the code in
the member function from modifying the actual parameter value. Since that's
part of the implementation details, and not the formal API, the author decided
to omit the extra CV-qualifier in the class definition, but have it in the
implementation.
The code is legal C++ and the compiler is broken if it's mangling the name
differently.
So no, it's not always "right" to keep them the same.
> Linking error about
> DOMLSSerializerImpl::canSetParameter()/setParameter()/getParameter()
> ----------------------------------------------------------------------------------------
>
> Key: XERCESC-1867
> URL: https://issues.apache.org/jira/browse/XERCESC-1867
> Project: Xerces-C++
> Issue Type: Bug
> Components: Build
> Affects Versions: 3.1.0
> Environment: Solaris SPARCv9, Sun CC
> Reporter: rucong zhao
> Assignee: Alberto Massari
> Fix For: 3.0.2, 3.1.0
>
>
> The building passed on Solaris SPARCv9 Sun CC, but following linking issues
> occurs:
> Undefined first referenced
> symbol in file
> bool xercesc_3_0::DOMLSSerializerImpl::canSetParameter(const unsigned
> short*,bool)const .libs/XPath2NodeSerializer.o
> bool xercesc_3_0::DOMLSSerializerImpl::canSetParameter(const unsigned
> short*,const void*)const .libs/XPath2NodeSerializer.o
> void xercesc_3_0::DOMLSSerializerImpl::setParameter(const unsigned
> short*,bool) .libs/XPath2NodeSerializer.o
> void xercesc_3_0::DOMLSSerializerImpl::setParameter(const unsigned
> short*,const void*) .libs/XPath2NodeSerializer.o
> const void*xercesc_3_0::DOMLSSerializerImpl::getParameter(const unsigned
> short*)const .libs/XPath2NodeSerializer.o
> ld: fatal: Symbol referencing errors. No output written to
> .libs/libxqilla.so.5.0.1
> *** Error code 1
> make: Fatal error: Command failed for target `libxqilla.la'
> Current working directory /export/home/db/rucong/dbxml-2.5.6/xqilla/build
> *** Error code 1
> George Feinberg had figure out the cause and gave the fix. The cause is type
> mismatching between DOMLSSerializerImpl.hpp and DOMLSSerializerImpl.cpp:
> In the .hpp file(xercesc/dom/impl/DOMLSSerializerImpl.hpp):
> virtual void setParameter(const XMLCh* name, const void* value);
> From the .cpp file:
> bool DOMLSSerializerImpl::canSetParameter(const XMLCh* const featName
> , const void* /*value*/) const
> Note that the .cpp uses "const XMLCh * const featName" where the .hpp file
> uses "const XMLCh *name"
> The fix is removing the extra "const" from the .cpp file:
> edit xercesc/dom/impl/DOMLSSerializerImpl.cpp
> - bool DOMLSSerializerImpl::canSetParameter(const XMLCh* const featName
> + bool DOMLSSerializerImpl::canSetParameter(const XMLCh* featName
> - bool DOMLSSerializerImpl::canSetParameter(const XMLCh* const featName
> + bool DOMLSSerializerImpl::canSetParameter(const XMLCh* featName
> - void DOMLSSerializerImpl::setParameter(const XMLCh* const featName
> + void DOMLSSerializerImpl::setParameter(const XMLCh* featName
> - void DOMLSSerializerImpl::setParameter(const XMLCh* const featName
> + void DOMLSSerializerImpl::setParameter(const XMLCh* featName
> - const void* DOMLSSerializerImpl::getParameter(const XMLCh* const featName)
> const
> + const void* DOMLSSerializerImpl::getParameter(const XMLCh* featName) const
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]