linux 开发异常错误记录
生活随笔
收集整理的這篇文章主要介紹了
linux 开发异常错误记录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-
?error: using typedef-name `T' after `class'
按照 http://stackoverflow.com/questions/6321191/using-friend-in-templates
提供的解決方案是:
使用間接方式:
template< typename T > class MakeFriend { public:typedef T Type; };template< typename T > class Factory { public:friend class MakeFriend< T >::Type ; };class Foo {};int main() {Factory< Foo > f;return 0; }?
-
error: expected `;' before "m_item"
-
error: ‘m_item’ was not declared in this scope
- 從屬屬性:在模板中依賴于一個template參數(也就是尖括號中typename后面的T啦)的屬性(注意,是屬性而不是成員哦)。
- 在使用從屬屬性的時候,應當在前面加上一個typename關鍵字,否則就會引發潛在的問題,如下所示。如果在T::someProperty前沒有typename關鍵字,也許編譯器會把聲明指針用的*認為是用作乘法的乘號。
修改后將如:
template< typename T> class SubTemplate { public:typedef T Type; };template< typename T> class Wrapper {typename SubTemplate< T >::Type m_item ; // modify this line };class Foo { };int main() {Wrapper< Foo> a;return 0; }?
-
?lua 棧溢出問題
程序老是自動訪問沖突到某一行, 具體調用過程是 C 調用 lua 在調用 C ,在后面的 C 函數里有如
int CreateMonsters( lua_State* L) {for( int row = 0; ...){for( int col = 0; ...){int mapid = GetMapID( L);...}}}經常在調用 CreateMonsters() 函數的位置, 例如?
{...CreateMonsters();...}?
報訪問沖突的錯誤, 即便在CreateMonsters() 內部加上通篇的 try-catch 也無法撲捉到, 函數尾部能夠訪問到, 就是推出函數時出錯;按照以往經驗估計是 棧溢出的問題, 才會如此的“粗暴”, 折騰了一番后, 發現時 int GetMapID( lua_State* L) 的問題:
int GetMapID( lua_State* L) {lua_pushnumber( L, m_mapid);return 1; }row * col 次插入如此多的數據到 棧里, 并且是 多次的 C、lua嵌套調用, 有沒有相應合理的 lua_pop( L, n)操作,當然導致某個時刻 從 C 到 lua 異常啦; 當然, 這也是錯誤使用 該函數, 該函數是給 lua 調用的, 并非給 C。
?
轉載于:https://www.cnblogs.com/Wilson-Loo/archive/2013/04/15/3021326.html
總結
以上是生活随笔為你收集整理的linux 开发异常错误记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery EasyUI API 中文
- 下一篇: linux chmod命令参数及用法详解