把一个对象放到结构里面出现的问题[2004年4月26日 9:27]

原创 2004年07月11日 03:08:00

正在做一个数据转发的东西,本来公司只是要求用BCB做一个出来。BCB的做了出来,感觉挺好玩,于是又用VC做了一遍,当然,BCBVC是想起来当然是大部分不一样的。现在又想扩充一下,用VC做个服务程序出来,可以动态申请开端口(原来只是一个服务端口)。具体的有空再说吧!

下面把CArray放到结构里,

typedef struct tagMainService

{

       TCHAR          DisabledAddr[30];

       CArray arrSubService;

}MAINSERVICE, *LPMAINSERVICE;

然后

MAINSERVICE m;

SUBSERVICE s;

m.arrSubService.Add(s);

这样用,应该没有什么问题吧!的确没有问题。

可是今天,我是用的时候却跳出莫名其妙Debug错误。而且出在了我第一次调用arrSubService的地方。停止的地方在

1.  Add

2ASSERT_VALID(this);

2.  ASSERT(nIndex >= 0);//停在这里

3.  AfxAssertValidObject

先看到nIndex>=0,这个明显是对的呀!怎么出错会在这里?想了半天不能明白。废话少说,还是把真想马上揭露吧。我在程序中多次用到了memset函数。结构体不用memset怎么行呢!相信高手应该看出什么端倪来了!memsetCArray对象的初始化也清除掉了,呵呵,虽然是对象,也会出现和new出来的一样找不到this。上面,VC真正断的应该是ASSERT(this)

原因找到了,要解决它,也简单把

CArray arrSubService;

换成CArray *pArrSubService;

memset以前记得把pArrSubService 清除掉。如果要保存CArray里面的数据,可以用一个临时的CArray指针接管,然后memset了以后,再指回去,注意要先把pArrayOld=NULL,要不然Array的结构也没了。使用以前先new一个。这样,新的问题也出来了。

m_MainService.arrSubService[i]. DisabledAddr

原来上面这句是直接可以用的,现在当[i]后面那个点出来的时候,可以见到VC提示CArray的函数,可是编译通不过。想想,应该是arrSubService转换成指针后出现的问题。一般我们用

char *p = new char[100];

p[10]=’a’;

这样是不会有问题,CArray和这个惯例逆了,修改成

(*m_MainService.arrSubService)[i]. DisabledAddr

呵呵,这样就行了。

C/C++复习:计算该日是该年的第几天(结构体)

/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作 者:董凯琦 *完成日期:2016年4月...
  • Asleny
  • Asleny
  • 2016年04月22日 17:55
  • 1321

输入年月日,输出是该年的第几天 法一

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 作 者:王颖 * 完成日期:2014 年 3 月 2 日 * 版 本 号:...
  • u012451600
  • u012451600
  • 2014年03月02日 14:26
  • 2170

日期字符串(DateStr)与日期对象(Date)之间的转换

转自:http://blog.csdn.net/xxd851116/article/details/3859587 今天做项目,遇到一个需要把日期字符串(如:2009-02-03)转...
  • chelen_jak
  • chelen_jak
  • 2014年06月07日 20:47
  • 3663

在fragment里面创建一个popwindow对象无法弹出的问题

一般是个控件,点击之后就弹出 popwindow 但是如果你出现popwindow无法弹出的问题   那么原因应该是你弹出的问题有问题: 一般是一句代码忘记了: popCategory.s...
  • u014737138
  • u014737138
  • 2015年10月27日 22:40
  • 988

思考一个问题:如何将map里面的值,映射到一个对象里的属性,不通过手动方式设置!!!

待补充
  • wangyonglin1123
  • wangyonglin1123
  • 2016年06月13日 11:48
  • 1796

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机AT89s52为中心器件来设计叫交通灯控制器,系统实用性强、操作性、扩展性强。我们组设计的单片机系统是由单片机系统、按键、L

  • 2010年07月01日 22:17
  • 208KB
  • 下载

传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)

day24 1.多线程(JDK5之后的Lock锁的概述和使用)   Lock:           void lock(): 获取锁。           void unlock():释放锁。 ...
  • juliantem
  • juliantem
  • 2016年04月15日 00:40
  • 4928

2017年4月26日 阿里巴巴笔试编程题 股票

2017年4月26日 阿里巴巴笔试编程题 股票
  • nameofcsdn
  • nameofcsdn
  • 2017年04月27日 16:38
  • 1718

4月26日用友面试题__全解析

用友Java面试题解析
  • moytomorrow
  • moytomorrow
  • 2016年04月26日 01:18
  • 1417

2017年4月26日工作日记

用mysqldump来备份线上数据库 需求:备份全部表结构,备份部分表数据; 语句:bin/mysqldump -udbproxy -pdbproxy xlw>xlw.sql 复制xlw这个数据库...
  • Vivian_xlw
  • Vivian_xlw
  • 2017年04月26日 13:44
  • 156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:把一个对象放到结构里面出现的问题[2004年4月26日 9:27]
举报原因:
原因补充:

(最多只允许输入30个字)