VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 232|回复: 1

[已解决]实用C++第37课 我和老师一样的代码,但编译出错:无法解析的外部符号

[复制链接]
63_avatar_middle
最佳答案
1 
donate_vip 发表于 2019-10-27 21:08:39 | 显示全部楼层 |阅读模式

--------头文件代码-----------
  1. class CAnimal
  2. {
  3. public:
  4.         //char name[50];   //正常
  5.         ////string name;
  6.         //int score;
  7.         //static const char* master;  //
  8.         static int master;
  9.         char* p_name;  //定义一个指针
  10.         char sex;
  11.         int ID;
  12.         int num;
  13.        
  14.         CAnimal();   //无参数的构造函数

  15.         CAnimal(CAnimal& stud);   //拷贝构造函数


  16.         CAnimal(const char* pname,char t_sex,int t_ID,int t_num);  //有参数的重载 构造函数

  17.         ~CAnimal();  //析构函数

  18.         void test();
  19.         int max_num(int x, int y);
  20.         void set_ID();

  21.        

  22. };
复制代码


--------cpp文件,函数定义代码---------
  1. #include "pch.h"
  2. #include "CAnimal.h"
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;


  6. CAnimal::CAnimal()
  7. {
  8.         master = 0;

  9. }



  10. CAnimal::CAnimal(const char* t_name, char t_sex, int t_ID, int t_num) :sex(t_sex), ID(t_ID), num(t_num)
  11. {
  12.         p_name = NULL;
  13.         int n_len = 0;
  14.        
  15.         if (t_name)
  16.         {
  17.                 n_len = strlen(t_name);
  18.         }

  19.         if (n_len>0)
  20.         {
  21.                 p_name = new char[n_len + 1];   //根据输入的字符数组分配字符数组,+1是为了成为一个字符串
  22.                 memset(p_name, 0, n_len + 1);  //初始化数组
  23.                 strcpy(p_name, t_name);                //copy 字符串
  24.         }


  25. }


  26. CAnimal::CAnimal(CAnimal& stud)
  27. {

  28. }

  29. //可能是因为参数是用字符串指针的问题不能事业拷贝函数来执行
  30. //CAnimal::CAnimal(CAnimal& stud)  //拷贝构造函数
  31. //{
  32. //        strcpy(this->p_name, stud.p_name);
  33. //        this->sex = stud.sex;
  34. //        this->ID = stud.ID;
  35. //        this->num = stud.num;
  36. //
  37. //}

  38. CAnimal::~CAnimal()   //析构函数
  39. {
  40.         if (p_name)
  41.         {
  42.                 delete []p_name;  //释放p_name空间
  43.                
  44.         }

  45.         cout << "My ~CAnimal" << endl;
  46. }
复制代码




编译出错提示,如下图:
实用C++第37课 我和老师一样的代码,但编译出错:无法解析的外部符号
最佳答案
63_avatar_small
2019-10-27 21:19:33
对不起老师,以为老师的代码肯定是没问题的,没看接下来的课程就盲目提问了。
问题已经解决:
原因是:静态变量记得这么在类外声明并初始化下

  1. #include "pch.h"
  2. #include "CAnimal.h"
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;

  6. int CAnimal::master = 0;  
  7. //静态变量是需要这样进行赋值的,否则会编译出错:无法解析的外部符号


  8. CAnimal::CAnimal()
  9. {
  10.         //master = 0;  //不能在构造函数里面对静态变量赋值

  11. }
复制代码






上一篇:MFC List control 鼠标怎么选中文字?
下一篇:在 MFC List control 单元格文字不同颜色
63_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2019-10-27 21:19:33 | 显示全部楼层    本楼为最佳答案   
bestAnswer
对不起老师,以为老师的代码肯定是没问题的,没看接下来的课程就盲目提问了。
问题已经解决:
原因是:静态变量记得这么在类外声明并初始化下

  1. #include "pch.h"
  2. #include "CAnimal.h"
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;

  6. int CAnimal::master = 0;  
  7. //静态变量是需要这样进行赋值的,否则会编译出错:无法解析的外部符号


  8. CAnimal::CAnimal()
  9. {
  10.         //master = 0;  //不能在构造函数里面对静态变量赋值

  11. }
复制代码


评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-12-1 12:53

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表