• cocos2d 缺少类型说明符


    写了一个对应让其出的错误(其实也挺不容易的喔 )

    错误如下:

    1>d:workwin32project esteachotherclude esteachotherclude est2.h(9): error C2143: 语法错误 : 缺少“;”(在“*”的前面)
    1>d:workwin32project esteachotherclude esteachotherclude est2.h(9): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>d:workwin32project esteachotherclude esteachotherclude est2.h(9): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>d:workwin32project esteachotherclude esteachotherclude est2.h(10): error C2061: 语法错误: 标识符“Test1”
    1>d:workwin32project esteachotherclude esteachotherclude esteachotherclude.cpp(15): error C2660: “Test2::className”: 函数不接受 1 个参数
    1>d:workwin32project esteachotherclude esteachotherclude esteachotherclude.cpp(16): error C2039: “test1”: 不是“Test2”的成员
    1>          d:workwin32project esteachotherclude esteachotherclude est2.h(7) : 参见“Test2”的声明
    1>d:workwin32project esteachotherclude esteachotherclude esteachotherclude.cpp(16): error C2227: “->refMe”的左边必须指向类/结构/联合/泛型类型

    上传Test方便大家看:

    main.cpp

    [cpp] view plaincopy
     
    1. #include "stdafx.h"  
    2. #include "Test1.h"  
    3. #include "Test2.h"  
    4.   
    5. int _tmain(int argc, _TCHAR* argv[])  
    6. {  
    7.     Test1* t1=new Test1();  
    8.     Test2* t2=new Test2();  
    9.     t1->className(t2);  
    10.     t1->test2->refMe();  
    11.   
    12.     t2->className(t1);  
    13.     t2->test1->refMe();  
    14.     return 0;  
    15. }  

    再来看Test1的

    Test1.h

    [cpp] view plaincopy
     
    1. #ifndef Test1_H  
    2. #define Test1_H  
    3.   
    4. #include "Test2.h"  
    5.   
    6. class Test1  
    7. {  
    8. public:  
    9.     Test2* test2;  
    10.     void Test1::className(Test2* test2);  
    11.     void refMe();  
    12. };  
    13. #endif;  

    Test1.cpp

    [cpp] view plaincopy
     
    1. #include "Test2.h"  
    2.   
    3. void Test1::className(Test2* test2)  
    4. {  
    5.     this->test2=test2;  
    6.     std::cout<<"Test1  ";  
    7. }  
    8.   
    9. void Test1::refMe()  
    10. {  
    11.     std::cout<<"refMe Test1"<<std::endl;  
    12. }  

    Test2.h

    [cpp] view plaincopy
     
    1. #ifndef Test2_H  
    2. #define Test2_H  
    3.   
    4. #include "Test1.h"  
    5.   
    6. class Test2  
    7. {  
    8. public:  
    9.     Test1* test1;  
    10.     void className(Test1* test1);  
    11.     void refMe();  
    12. };  
    13. #endif  

    Test2.cpp

    [cpp] view plaincopy
     
    1. #include "StdAfx.h"  
    2. #include "Test2.h"  
    3. #include <iostream>  
    4.   
    5. void Test2::className(Test1* test1)  
    6. {  
    7.     this->test1=test1;  
    8.     std::cout<<"Test2  ";  
    9. }  
    10.   
    11. void Test2::refMe()  
    12. {  
    13.     std::cout<<"refMe Test2"<<std::endl;  
    14. }  


    然后运行就报上面的一对错误了...

    仔细看看发现两个头文件都彼此包含了,就是这个问题啦...那我们怎么解决了,上传我的代码,直接看这样更容易理解  main.cpp不变

    Test1.h

    [cpp] view plaincopy
     
    1. #ifndef Test1_H  
    2. #define Test1_H  
    3. //#include "Test2.h" //用下面的方式替代  
    4. class Test2;//注意:只是告诉编译器,需要这个类,其他功能结构等都没  
    5.   
    6. class Test1  
    7. {  
    8. public:  
    9.     Test2* test2;  
    10.     void Test1::className(Test2* test2);  
    11.     void refMe();  
    12. };  
    13. #endif;  


     Test1.cpp

    [cpp] view plaincopy
     
    1. #include "StdAfx.h"  
    2. #include "Test1.h"  
    3. #include <iostream>  
    4.   
    5. #include "Test2.h" //注意:这里才是真正的包含  
    6.   
    7. void Test1::className(Test2* test2)  
    8. {  
    9.     this->test2=test2;  
    10.     std::cout<<"Test1  ";  
    11. }  
    12.   
    13. void Test1::refMe()  
    14. {  
    15.     std::cout<<"refMe Test1"<<std::endl;  
    16. }  


    Tes2的我就不贴了,一样的道理,编译运行ok ....

  • 相关阅读:
    2016701010126 2016-2017-2《java程序设计》集合
    201671010126 2016-2017-2《Java程序设计》第六周
    201671010126 2016-2017-2《Java程序设计》总结
    201671010128 2017-12-17《Java程序设计》之并发
    201671010128 2017-11-10《Java程序设计》之应用程序部署(2)
    201671010128 2017-11-29《Java程序设计》之应用程序部署
    201671010128 2017-11-29《Java程序设计》之Swing用户界面组件
    201671010128 2017-11-19《Java程序设计》之事件处理技术
    201671010128 2017-11-12《Java程序设计》之图形程序设计
    201671010128 2017-11-05《Java程序设计》之集合
  • 原文地址:https://www.cnblogs.com/yufenghou/p/3625703.html
Copyright © 2020-2023  润新知