error C2061: 語法錯誤: 標識符“MonsterSprite”



本文爲firedragonpzy原創,轉載務必在明顯處註明:
轉載自【Softeware MyZone】原文鏈接:
 http://www.firedragonpzy.com.cn/index.php/archives/690

 

今天遇到了一個扯淡的錯誤,搞了半天時間,最終同事給解決了,錯誤信息如下:

1>e:\ios\cocos2d-1.0.1-x-0.11.0\purplebufferfly\classes\drawfireline.h(40): error C2061: 語法錯誤: 標識符“MonsterSprite”
1>e:\ios\cocos2d-1.0.1-x-0.11.0\purplebufferfly\classes\drawfireline.h(50): error C2143: 語法錯誤 : 缺少“;”(在“*”的前面)
1>e:\ios\cocos2d-1.0.1-x-0.11.0\purplebufferfly\classes\drawfireline.h(50): error C4430: 缺少類型說明符 – 假定爲 int。注意: C++ 不支持默認 int
1>e:\ios\cocos2d-1.0.1-x-0.11.0\purplebufferfly\classes\drawfireline.h(50): error C4430: 缺少類型說明符 – 假定爲 int。注意: C++ 不支持默認 int
1>e:\ios\cocos2d-1.0.1-x-0.11.0\purplebufferfly\classes\firescene.h(16): error C2143: 語法錯誤 : 缺少“;”(在“*”的前面)
1>e:\ios\cocos2d-1.0.1-x-0.11.0\purplebufferfly\classes\firescene.h(16): error C4430: 缺少類型說明符 – 假定爲 int。注意: C++ 不支持默認 int
1>e:\ios\cocos2d-1.0.1-x-0.11.0\purplebufferfly\classes\firescene.h(16): error C4430: 缺少類型說明符 – 假定爲 int。注意: C++ 不支持默認 int
1>e:\ios\cocos2d-1.0.1-x-0.11.0\purplebufferfly\classes\tigermountainscene.cpp(219): warning C4305: “參數”: 從“double”到“cocos2d::ccTime”截斷

這樣子看來,是沒有定義MonsterSprite,但是我確實定義過啊。下面,給大家詳細解釋一下。
我程序是這樣子的,MonsterSprite是自己封裝的一個精靈類,而在一個自定義的層(DrawLine)中使用這個自定義的精靈,在DrawLine中#include “MonsterSprite.h”進來,然後使用自定義精靈類,最終在自定義的層中使用自定義的精靈,一切看起來是這麼的自然,這麼的合理,可是爲什麼偏偏報錯了。
從C2061: 語法錯誤: 標識符“MonsterSprite”,看起來就是沒有定義MonsterSprite,而是把MonsterSprite看成了標識符,一般大家自己定義的變量什麼的大家習慣稱之爲標識符,但是我明明定義了,爲什麼還說沒有呢。原因是編譯就沒有通過,我這次犯的錯是重複包含,即A包含了B,B又包含了A,我的還稍微複雜點,在某個文件的頭文件中包含了某個頭文件,一層嵌一層,導致A包含了B,B又包含了A。希望大家以後注意,不要犯我這樣的低級錯誤。
下面貼出解決方案:


 在DrawLine頭文件中先聲明一下類:class MonsterSprite;然後在DrawLine.cpp文件中#include “MonsterSprite.h”,反之即可。


發佈了13 篇原創文章 · 獲贊 23 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章