VB 关于类中声明全局结构体变量的问题

LandY和C 2019-02-25 10:22:03
我用类不多,没经验。问题如下

比如此刻有一辆车。车有 车类型 , 车牌 , 出厂日期.......属性

我在模块中声明结构体类型,并定义全局结构体变量
---------------------------------------
private type tCar
CarType as string
CarID as string
end type

public Car as tCar
---------------------------------------
以上是没有问题的。
在其他窗体调用也没有问题
如:Car.type = "奔驰"
================================
但时现在我不想用模块做了,我想将他定义为一个类
我添加一个空白类,并命名为 cls_Car
在这个类中写到
private type tCar
CarType as string
CarID as string
end type

public Car as tCar '这里就开始报错了
----------------------------------------
编译都编译不过去,他提示public 全局声明无法使用自定义类型·······

这是为什么?求您给我解释一下其中的缘由。越仔细越好。我想学。
==========================================
以下是我试着用其他方法
在这个类中写到
public CarType as string
public CarID as string
-----------------------------------------
其他窗体中写到
dim Car as New cls_Car

Car.Cartype = "奔驰"
这是可以的,跟我理解的类一样。
========================================
还有一个问题 相信上面那个类中声明全局结构体的问题解决了
下面这个肯定也就解决了,他们两个报错的性质一样
假如此刻车上坐了人。那么 姓名 ,性别····就是他要有的属性
我在cls_Car中写到
private type tPerson
Name as string
Sex as Boolean
end type

private type tCar
CarType as string
CarID as string
Person() as tPerson '人数不确定,所以定义动态数组
end type

public Car as tCar
'以上也是我最终想要达到的目的,可是编译不过去
=================================
...全文
149 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
milaoshu1020 2019-02-26
  • 打赏
  • 举报
回复
我的解决方法是:把type改成类,把type成员变成类成员.
milaoshu1020 2019-02-26
  • 打赏
  • 举报
回复
集合类可以参考这篇文章,NewEnum方法需要在菜单中找到该方法的属性,并修改该方法ID.
https://www.cnblogs.com/ayanmw/archive/2012/07/03/2575000.html
milaoshu1020 2019-02-26
  • 打赏
  • 举报
回复
引用 2 楼 weixin_44603568 的回复:
[quote=引用 1 楼 milaoshu1020 的回复:]
我的解决方法是:把type改成类,把type成员变成类成员.


这样说的话,那得建多少类啊。
这不是关键,关键是动态的建类。比如乘客数量不确定。

[/quote]
1. 类多不要紧,只要你勤快;
2. 不确定数量的可以用collection.
Private Person as New Collection
这样是弱类型的不但可以放Person类的对象,也可以放别的类的对象;
或者创建一个Collection类:
Private colPerson as new PersonCollection.
PersonCollection类里边重载Collection的属性和方法,入口处如add方法使用强类型的参数.
也可以.
在入口处
LandY和C 2019-02-26
  • 打赏
  • 举报
回复
引用 1 楼 milaoshu1020 的回复:
我的解决方法是:把type改成类,把type成员变成类成员.


这样说的话,那得建多少类啊。
这不是关键,关键是动态的建类。比如乘客数量不确定。

c 语言入门到精通 变量   变量是指在程序的运行过程中随时可以发生变化的量。   变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量变量中可以存放单词、数值、日期以及属性。由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。   变量有两种类型:属性变量和用户自己建立的变量。   当我们在窗体中设计用户界面时,vb6会自动为产生的对象(包括窗体本身)创建一组变量,即属性变量,并为每个变量设置其缺省值。这类变量可供我们直接使用,比如引用它或给它赋新值。   用户也可以创建自己的变量,以便存放程序执行过程中的临时数据或结果数据等等。在程序中,这样的变量是非常需要的。下面就介绍这类变量的创建和使用方法。   1.变量的命名规则   首先,我们必须给变量取一个合适的名字,就好像每个人都有自己的名字一样,否则就难以区分了。   在VB6中,变量的命名必须遵循以下规则:   (1)变量名必须以字母打头,名字中间只能由字母、数字和下划线“_”组成;最后一个字符可以是类型说明符;   (2)变量名的长度不得超过255个字符;   (3)变量名在有效的范围内必须是唯一的。   有效的范围就是引用变量可以被程序识别、使用的作用范围——例如一个过程、一个窗体等等。有关引用变量作用范围的内容,将在以后介绍。   (4)变量名不能是VB中的保留字(关键字),也不能是末尾带类型说明符的保留字,但可以把保留字嵌入变量名,   关键字是指VB6语言中的属性、事件、方法、过程、函数等系统内部的标识符。如已经定义的词(if、endif、while、loop等)、函数名(len、format、msgbox等)。像Print、Print$是非法的,而Myprint是合法的。   例如:   strName1,intMax_Length,intLesson,strNo3等是合法的变量名,而A&B,all right,3M,_Number等是非法的变量名。   注意:   (1)变量名是不区分大小写的。如ABC、aBc、abc等都是一样的。   (2)定义和使用变量时,通常要把变量名定义为容易使用阅读和能够描述所含数据用处的名称,而不要使用一些难懂的缩写如A或B2等。   例如,假定正在为水果铺编一个销售苹果的软件。我们需要两个变量来存储平果的价格和销量。此时,可以定义两个名为Apple_Price和Apple_Sold的变量。每次运行程序时,用户就这两个变虽提供具体值,这样看起来就非常直观。   具体方法是:通过用一个或多个单词组成有意义的变量名来使变量意义明确。例如,变量名SalesTaxRate就比Tax或Rate的意义明确得多。   (3)根据需要混合使用大小写字母和数字。一个合理协议是,变量中每个单词的第一个字母大写,例如:DateOfBirth。   (4)另一个合理协议是,每个变量名以两个或三个字符缩写开始,这些字符缩写对应于变量要存储数据的数据类型。例如,使用strName来说明Name变量保存字符串型数据。   虽然现在无须过多地关注字符缩写的细节,但以后还是需要看一下这方面的约定。在Visual Basic联机帮助和许多Visual Basic高级编程的书籍中都可以找到这一约定的细节。   2.声明一个变量   变量在使用前,必须在代码中进行声明,即创建该变量。   在使用变量之前,大多数语言通常首先需要声明变量。就是说,必须事先告诉编译器在程序中使用了哪些变量,及这些变量的数据类型以及变量的长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执行。   声明变量有两种方式:隐式声明、显式声明。   隐式声明变量可以不经声明直接使用,此时VB给该变量赋予缺省的类型和值。这种方式比较简单方便,在程序代码中可以随时命名并使用变量,但不易检查。   显式声明:用声明语句创建变量。   强制显式声明变量:   为了避免写错变量名引起的麻烦,用户可以规定,只要遇到一个未经明确声明就当成变量的名字,VB都发出错误警告。方法是----强制显式声明变量。要强制显式声明变量,只须在类模块、窗体模块或标准模块的声明段中加入这条语句:   Option Explicit   这条语句是用来规定在本模块中所有变量必须先声明再使用,即不能通过隐式声明来创建变量。在添加Option Explicit语句后,VB将自动检查程序中是否有未定义的变量,发现后将显示错误信息。   如果要自动插入Option Explicit语句,用户只要在“工具”菜单中选取“选项”命令,然后单击“选项”对话框中的“编辑器”选项卡,再选中“要求变量声明”选项   这样VB就会在任何新模块中自动插入Option Explicit语句,但只会在新建立的模块中自动插入。所以对于已经建立的模块,只能用手工方法向现有模块添加Option Explicit语句(只有再重新启动VB,这项功能才有效)。   理解变量的范围   变量的范围确定了能够知晓该变量存在的那部分代码。在一个过程内部声明变量时,只有过程内部的代码才能访问或改变那个变量的值;它有一个范围,对该过程来说是局部的。但是,有时需要使用具有更大范围的变量,例如这样一个变量,其值对于同一模块内的所有过程都有效,甚至对于整个应用程序的所有过程都有效。Visual Basic 允许在声明变量时指定它的范围。   C语言中的变量类型:   C语言中,变量分为全局变量和局部变量;也可以这样分:自动变量,静态变量.前者是按变量作用范围来分的,而后者是按变量存储方式来分的.   如果按存储占用空间来分,可以是整型变量,字符型变量,浮点型变量等.当然还有数组,结构体变量等.   C语言还有一个重要变量:指针变量.它存放的值是一个内存地址.   另一点,声明变量时,可以不用声明就直接赋值来决定变量类型的语言如(javascript,flash cs3.0以前,等),这类语言变量声明通常被称为弱类型,而如(c++等)必须先声明,后使用,而且声明时必须确定变量类型,这种就是严格的数据类型.   变量有两种类型:属性变量和用户自己建立的变量

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧