curses 5.9 编译错误 no matching function for call to get_user

2,786 阅读1分钟
In file included from ../c++/cursesf.h:39:0,
                 from ../c++/cursesf.cc:35:
../c++/cursesp.h: In member function 'T* NCursesUserPanel<T>::UserData() const':
../c++/cursesp.h:256:43: error: no matching function for call to 'NCursesUserPanel<T>::get_user() const'
     return reinterpret_cast<T*>(get_user ());
                                           ^
../c++/cursesp.h:80:9: note: candidate: void* NCursesPanel::get_user() <near match>
   void *get_user()
         ^~~~~~~~
../c++/cursesp.h:80:9: note:   passing 'const NCursesUserPanel<T>*' as 'this' argument discards qualifiers
In file included from ../c++/cursesw.h:36:0,
                 from ../c++/cursesp.h:39,
                 from ../c++/cursesf.h:39,
                 from ../c++/cursesf.cc:35:

解决办法

-  T* UserData (void) const
+  T* UserData (void)
   {
     return reinterpret_cast<T*>(get_user ());
   };

错误提示 discards qualifiers因为 get_user()是非 const的,而UserData()是const成员函数不可以调用非const成员函数