帮助下c++对象定义的问题

问题描述

帮助下c++对象定义的问题

各位大神,我一直很纳闷,我在定义对象的时候一直用的是CSerial *m_serial;
这种格式,今天看到CSerial m_serial;这种格式也能用,但是我一用就会报错,是需要定义什么东西吗?谢谢…………

解决方案

不探究原理的话,你可以找到CSerial 类的头文件,在你定义CSerial m_serial的CPP文件中include。

探究原理的话,楼上说的已经很清楚了,补充一下,你之所以之前使用CSerial *m_serial能够不报错,是因为此时你声明的是一个指针而不是对象(代码前面应该有class CSerial的前置声明),此时编译器不需要知道CSerial类的大小,只需要分配一个指针大小的空间即可,在链接的时候才会去找相关的方法和属性。如果你用CSerial m_serial形式声明,此时声明的是一个对象,由于你没有include这个类的头文件,所以编译器不知道要分配多少空间给这个对象,所以就报错喽。

解决方案二:

带* 的是定义指针,不带是类实例
他们用法会有差异,你要根据情况写你的代码,而不是仅仅去掉*号,否则你原来按照指着访问或者分配空间的地方都会报错

解决方案三:

具体报什么错误呢?
一般情况下,应该是CSerial类包含有参构造函数,需要传入参数;
定义为指针,还未开始调用构造函数,所以不会报错,当你new一个对象的时候就需要传入了。

解决方案四:

具体报什么错误呢?
一般情况下,应该是CSerial类包含有参构造函数,需要传入参数;
定义为指针,还未开始调用构造函数,所以不会报错,当你new一个对象的时候就需要传入了。
具体要看是报什么错误了

解决方案五:

带星号的不是对象,是这个类型的指针,需要通过new来创建对象,不带星号的才是定义了一个对象,由程序自动管理内存。

解决方案六:

CSerial *m_serial; 定义这个,只需要对CSerial 进行类型申明,告诉编译器CSerial 这个是一个类型名就行了,此时并不创建CSerial 类型的对象。
CSerial m_serial; 这个是定义实际的对象,创建对象是需要进行内存空间分配的,要创建CSerial 类型的对象,编译器必须知道CSerial 长什么样,才
知道CSerial 对象占用多大的空间,也才知道自己要分配多少内存空间来容纳CSerial 对象。

解决方案七:

CSerial *m_serial是对象指针,需要初始化;
CSerial m_serial是对象实例,可直接构造。
希望能够帮到你。

解决方案八:

太感谢了,只能采纳一个,所以感谢各位了……这么多热心人,谢谢

解决方案九:

一个是对象指针,一个是对象实例
带指针的需要初始化,对象实例,直接构造

时间: 2025-01-27 05:43:20

帮助下c++对象定义的问题的相关文章

Asp.net下的对象成员数据绑定器实现

asp.net|对象|数据     用过MonoRail的朋友应该知道它提供的对象成员数据绑定功能非常方便,通过标记参数属性或方法就可以自动把提交回来的数据和对象成员进行绑定:有了这些方便的功能的确可以节省大量的set代码.不过这些功能只是MonoRail提供,于是实现类似的功能方便自己开发. 实现目标:可以灵活方便地实现数据绑定. OrderSearch search = FormContext.BindObject<OrderSearch>(); Orders order = FormCo

JavaScript通过prototype给对象定义属性用法实例

 这篇文章主要介绍了JavaScript通过prototype给对象定义属性用法,实例分析了prototype的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JavaScript通过prototype给对象定义属性的用法.分享给大家供大家参考.具体分析如下: 下面的JS代码定义了movie对象.在使用对象的过程中又通过prototype给对象添加了isComedy属性,调用的时候直接使用object.isComedy即可,非常方便. ? 1 2 3 4 5 6

JavaScript通过prototype给对象定义属性用法实例_javascript技巧

本文实例讲述了JavaScript通过prototype给对象定义属性的用法.分享给大家供大家参考.具体分析如下: 下面的JS代码定义了movie对象.在使用对象的过程中又通过prototype给对象添加了isComedy属性,调用的时候直接使用object.isComedy即可,非常方便. <script type="text/javascript"> <!-- function movieToString() { return("title: "

C#下Socket对象的BeginReceive方法

对象 到底是怎么回事?仅仅发生在我的机器上,修改了ip配置后放到别的机器上是没有任何问题的,可以很好的回调.难道我的机器有何异常?请教高手了! 某一线程下socket对象user.sock开始执行BeginReceive语句: user.sock.BeginReceive(user.buffer,0,User.BufferSize,0,new System.AsyncCallback(DoRecevive),user); 对应的回调函数: public static void DoReceviv

box-类与对象 定义一个Box(盒子)类,

问题描述 类与对象 定义一个Box(盒子)类, 定义一个Box(盒子)类,成员变量: length(长).width(宽)和height(高) 默认值均为0:成员方法: 构造方法Box()有三个参数,设置盒子长.宽和高三个合理的初始数据(正数):方法getVolume()没有参数,计算并返回盒子的体积,方法getArea()没有参数,计算并返回盒子的表面积,方法setEdge()有三个参数,用于修改三条边长.定义TestBox类,在其main()方法中创建Box对象b,长宽高分别为3.4.5,求

virtualbox-Virtualbox下启动对象失败问题

问题描述 Virtualbox下启动对象失败问题 大神谁遇到过这个问题,关于Virtualbox的求指点 解决方案 http://jingyan.baidu.com/article/4d58d541186ad89dd4e9c018.html 解决方案二: 这个方法试了,不行. 解决方案三: 希望大神们能再次指点.

link环境下,如何定义带有枚举的符合实体类型?这种类型怎么定义?

问题描述 link环境下,如何定义带有枚举的符合实体类型?这种类型怎么定义? link环境下,如何定义带有枚举的符合实体类型?这种类型怎么定义? 解决方案 https://msdn.microsoft.com/zh-cn/data/hh859576

link环境下codefirst如何定义符合主键?如何使用符合主键?

问题描述 link环境下codefirst如何定义符合主键?如何使用符合主键? link环境下codefirst如何定义符合主键?如何使用符合主键? 解决方案 http://zhidao.baidu.com/link?url=fXpU4QGsRiEHfX-eSdLU_7rzw0O63yTFj0sCQUbASn_OJ0lURKG3uS_QFuPG_gnlZzy6o1ZS1Hv45-HPXCRqf_

SQL Server中授予用户查看对象定义的权限

SQL Server中授予用户查看对象定义的权限   在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程.函数.视图.表)的定义权限存.如果是部分存储过程.函数.视图授予查看定义的权限,那么就像下面脚本所示,比较繁琐:     GRANT VIEW DEFINITION ON  YOUR_PROCEDURE TO   USERNAME;   GRANT VIEW DEFINITION ON  YOUR_FUNCTION TO USERNAME;   GRAN