I have having trouble compiling ~/libavogadro/src/python/fragment.cpp.
 The issue appears to be that the python boost template function
arguments can not be resolved when there is a constant and non
constant version.  Here is the make output for an example:

[ 82%] Building CXX object
libavogadro/src/python/CMakeFiles/python-module.dir/fragment.cpp.o
cd /app/ccm/opt/build/avogadro/libavogadro/src/python &&
/usr/bin/g++44   -Dpython_module_EXPORTS -D_BSD_SOURCE
-DHAVE_GCC_VISIBILITY -DENABLE_PYTHON -DQT_OPENGL_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -DQT_NO_DEBUG -fvisibility=hidden
-fvisibility-inlines-hidden -fpermissive -O2 -g -Wnon-virtual-dtor
-Wno-long-long -ansi -Wcast-align -Wchar-subscripts -Wall -Wextra
-Wpointer-arith -Wformat-security -fno-check-new -fno-common -pedantic
-fPIC -I/app/ccm/opt/build/avogadro/libavogadro/include
-I/app/CSE/20111228/Release/qt-4.7.4/include
-I/app/CSE/20111228/Release/qt-4.7.4/include/QtOpenGL
-I/app/CSE/20111228/Release/qt-4.7.4/include/QtGui
-I/app/CSE/20111228/Release/qt-4.7.4/include/QtCore
-I/app/ccm/opt/build/avogadro/libavogadro/src
-I/u/home/app/ccm/opt/include/eigen2
-I/u/home/app/ccm/opt/include/openbabel-2.0
-I/u/home/app/CSE/20111228/Apps/boost-1.46.0/include
-I/app/CSE/20111228/Release/python-2.6.4/include/python2.6
-I/app/ccm/opt/src/avogadro/libavogadro/include
-I/app/ccm/opt/build/avogadro/libavogadro/src/python
-I/app/CSE/20111228/Analysis/numpy-1.3.0/lib/python2.6/site-packages/numpy/core/include
  -o CMakeFiles/python-module.dir/fragment.cpp.o -c
/app/ccm/opt/src/avogadro/libavogadro/src/python/fragment.cpp
/app/ccm/opt/src/avogadro/libavogadro/src/python/fragment.cpp: In
function 'void export_Fragment()':
/app/ccm/opt/src/avogadro/libavogadro/src/python/fragment.cpp:21:
error: no matching function for call to
'boost::python::class_<Avogadro::Fragment,
boost::python::bases<Avogadro::Primitive, mpl_::void_, mpl_::void_,
mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_,
mpl_::void_, mpl_::void_>, boost::noncopyable_::noncopyable,
boost::python::detail::not_specified>::add_property(const char [5],
<unresolved overloaded function type>, void
(Avogadro::Fragment::*)(QString), const char [26])'
make[2]: *** 
[libavogadro/src/python/CMakeFiles/python-module.dir/fragment.cpp.o]
Error 1
make[2]: Leaving directory `/u/home/app/ccm/opt/build/avogadro'
make[1]: *** [libavogadro/src/python/CMakeFiles/python-module.dir/all] Error 2
make[1]: Leaving directory `/u/home/app/ccm/opt/build/avogadro'
make: *** [all] Error 2


This has to do with initializing the name property of the Fragment
class for Python.  In ~/libavogadro/src/fragment.h, we have

      inline QString name() { return m_name; }
      inline const QString & name() const { return m_name; }

It seems that in situations where there are not const member functions
(or other const qualifies), this works ok.  I have run across this
type of problem with C++ the distant past, but don't remember much
about it.  Anyway, what solution would be acceptable for the Avogadro
developers?

Thanks,
Gary

------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Avogadro-devel mailing list
Avogadro-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/avogadro-devel

Reply via email to