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
- 從屬屬性:在模板中依賴(lài)于一個(gè)template參數(shù)(也就是尖括號(hào)中typename后面的T啦)的屬性(注意,是屬性而不是成員哦)。
- 在使用從屬屬性的時(shí)候,應(yīng)當(dāng)在前面加上一個(gè)typename關(guān)鍵字,否則就會(huì)引發(fā)潛在的問(wèn)題,如下所示。如果在T::someProperty前沒(méi)有typename關(guān)鍵字,也許編譯器會(huì)把聲明指針用的*認(rèn)為是用作乘法的乘號(hào)。
修改后將如:
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 棧溢出問(wèn)題
程序老是自動(dòng)訪(fǎng)問(wèn)沖突到某一行, 具體調(diào)用過(guò)程是 C 調(diào)用 lua 在調(diào)用 C ,在后面的 C 函數(shù)里有如
int CreateMonsters( lua_State* L) {for( int row = 0; ...){for( int col = 0; ...){int mapid = GetMapID( L);...}}}經(jīng)常在調(diào)用 CreateMonsters() 函數(shù)的位置, 例如?
{...CreateMonsters();...}?
報(bào)訪(fǎng)問(wèn)沖突的錯(cuò)誤, 即便在CreateMonsters() 內(nèi)部加上通篇的 try-catch 也無(wú)法撲捉到, 函數(shù)尾部能夠訪(fǎng)問(wèn)到, 就是推出函數(shù)時(shí)出錯(cuò);按照以往經(jīng)驗(yàn)估計(jì)是 棧溢出的問(wèn)題, 才會(huì)如此的“粗暴”, 折騰了一番后, 發(fā)現(xiàn)時(shí) int GetMapID( lua_State* L) 的問(wèn)題:
int GetMapID( lua_State* L) {lua_pushnumber( L, m_mapid);return 1; }row * col 次插入如此多的數(shù)據(jù)到 棧里, 并且是 多次的 C、lua嵌套調(diào)用, 有沒(méi)有相應(yīng)合理的 lua_pop( L, n)操作,當(dāng)然導(dǎo)致某個(gè)時(shí)刻 從 C 到 lua 異常啦; 當(dāng)然, 這也是錯(cuò)誤使用 該函數(shù), 該函數(shù)是給 lua 調(diào)用的, 并非給 C。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Wilson-Loo/archive/2013/04/15/3021326.html
總結(jié)
以上是生活随笔為你收集整理的linux 开发异常错误记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jQuery EasyUI API 中文
- 下一篇: C# 声明方法的语法