游戏开发论坛

 找回密码
 立即注册
搜索
楼主: Miu.C

真没想到VB也可以这样用之指针技术

[复制链接]

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-8-5 15:58:00 | 显示全部楼层

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:真没想到VB也可以这样用

Miu.C: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:真没想到VB也可以这样用之指针技术


泛型吧?

恩,笔误…… [em7] [em7]

61

主题

1429

帖子

1430

积分

金牌会员

Rank: 6Rank: 6

积分
1430
发表于 2007-8-5 19:03:00 | 显示全部楼层

Re: Re: Re: Re: Re: Re: Re: Re: Re:真没想到VB也可以这样用之指

Miu.C: Re: Re: Re: Re: Re: Re: Re: Re:真没想到VB也可以这样用之指针技术


VB7不就是VS2002那个吗?不是早就有了吗?现在都用VS2005了~~


visual basic 7.0
眼睛有毛病??

61

主题

1429

帖子

1430

积分

金牌会员

Rank: 6Rank: 6

积分
1430
发表于 2007-8-5 19:03:00 | 显示全部楼层

Re: Re:真没想到VB也可以这样用之指针技术

CLOD: Re:真没想到VB也可以这样用之指针技术

我现在用VB9,发现没有6好用


是呀 ! 学了N年连个游戏都做不出

5

主题

972

帖子

975

积分

高级会员

Rank: 4

积分
975
发表于 2007-8-5 19:05:00 | 显示全部楼层

Re: Re: Re:真没想到VB也可以这样用之指针技术

使命召唤: Re: Re:真没想到VB也可以这样用之指针技术



是呀 ! 学了N年连个游戏都做不出

[em2] [em2] [em2] [em2]是啊,学到脑残了

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-8-5 22:25:00 | 显示全部楼层

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:真没想到VB也可以这样用之

使命召唤: Re: Re: Re: Re: Re: Re: Re: Re: Re:真没想到VB也可以这样用之指针技术



visual basic 7.0
眼睛有毛病??


就是visual basic 7.0

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-3-17 01:11:00 | 显示全部楼层

Re:真没想到VB也可以这样用之指针技术

除非和VC写的DLL交互,否则没有必要。

VB的Object(对象变量)实际上就是指针。(IUnknown)

不过基本数据类型是没有指针的,但是,可以封装一个包装器:

'''Class CInteger'''''''
Public v As Integer

其他类型同理,这样就可以了,比如:

Dim p1 As CInteger,p2 As CInteger
Set p1 = new Integer
Set p2 = p1
Let p2.v = 10
Msgbox "p1 is :" + CStr(p1.v)

如果你觉得麻烦,可以用“类生成器”,新建一个属性v,选择“缺省属性”即可,然后:
Set p2 = p1 '把p2 指向 p1
Let p2 = p1 '把p1 的默认属性v的值,拷贝到p2
注意Set和Let是不同的哦


但是,怎样实现void * *,即指针的指针?同样也可以写一个包装器:

'''Class CPtrPtr ''''''指针的指针
Public v As Object
(这里不要用“缺省属性”,会出现歧义)


另外,VB不支持数组的赋值,为了做到这一点,有很多方法,
最懒的方法是,直接使用集合(Collection)
集合中可以加入Object类型的任何东西。对于基本数据类型,使用包装器即可。
要说的是,VB不支持泛型,模版,但是VB中的方法,属性,是后期绑定的,
实际上是通过 IDispatch::Invoke来调用的,而每个Class都实现了IDispatch,IUnknown.
所以不用管静态数据类型,直接调用即可,只不过速度慢,而且没有IDE的即时提示

集合中也可以放置集合,所以,就等于是动态 N 维数组。

这样,指针,指针的指针,指针的指针的指针,数组的指针,N 维数组。。。都齐全了。

29

主题

475

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
发表于 2008-3-17 01:35:00 | 显示全部楼层

Re:真没想到VB也可以这样用之指针技术

其实指针就是变量代替,不见没有指针就不能使用高级功能,在面向对象语言中,不NEW对象并赋值就是指针指向,比如在VB.NET中

Dim Coll As New Collection
Dim CollPtr As Collection = Coll

这时对CollPtr操作就相当于对Coll操作,这和指针的用处是一样的,而且更加简便,而且VB.NET也支持传址参数,实现方法级别的指针也可以轻松实现。但是类似于*(a++)这种的使用方法就只能在C/C++中实现了。

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2008-3-17 03:29:00 | 显示全部楼层

Re:真没想到VB也可以这样用之指针技术

指针是用来实现低级功能的。

在VB中不管怎么模拟,效率都差了个数量级……

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2008-3-17 08:47:00 | 显示全部楼层

Re: Re:真没想到VB也可以这样用之指针技术

psic: Re:真没想到VB也可以这样用之指针技术

指针是用来实现低级功能的。

在VB中不管怎么模拟,效率都差了个数量级……


那是你没学精!
代码和引擎是可以优化的!

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2008-3-17 09:39:00 | 显示全部楼层

Re: Re: Re:真没想到VB也可以这样用之指针技术

游戏之家站长: Re: Re:真没想到VB也可以这样用之指针技术



那是你没学精!
代码和引擎是可以优化的!


例如??
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 11:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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