问题是这样的:在一个非可视对象里定义了一个结构a,在该对象中也定义了一个函数,函数的某一个参数类型为a,当在某一个窗口中调用该函数时,总说函数参数类型不匹配,谁有办法?

welcome_to_ 2001-08-23 05:31:05
...全文
210 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
welcome_to_ 2001-08-25
  • 打赏
  • 举报
回复
to liulee(流方)
呵呵,我现在就是这样做的,可怜我的结构体成员很多,结果函数的参数多的不得了
pb在这一点上有缺陷.:-(
liulee 2001-08-25
  • 打赏
  • 举报
回复
如果想简单一点而且避开结构问题,把结构打散,作为参数进入。

zonghongbin 2001-08-25
  • 打赏
  • 举报
回复
一点建议
对于作为外部接口的参数类型应该是调用者作用域可见的。如您所说的a结构。
如果您不希望结构a暴露于外,那么就不应该以结构a作为参数。因为调用者(如窗口事件的脚本)在传达参数时必须要明白传递的是什么东西。
变通的办法可以这样:
把原来的自定义对象函数定义为private或protected,以结构a为参数实现原有功能(出于封装a的目的);再增加一个public函数,以某全局数据类型定义其接口(该类型不应特定于某一用户对象)作为和外部通信的手段。
以上只是一点建议,因不清楚您的对象的真实目的,所以无法提出具体的方法,抱歉。
welcome_to_ 2001-08-25
  • 打赏
  • 举报
回复
to liulee(流方)
你的意思我明白,就是定义一个全局结构体,还有别的办法吗?
welcome_to_ 2001-08-24
  • 打赏
  • 举报
回复
非得把结构定义在外面吗?没有别的办法?
我想尽可能把所有的东东都封装在一个对象中。
liulee 2001-08-24
  • 打赏
  • 举报
回复
to welcome_to_(dark) 
你理解错了。

是定义一个象窗口一样的结构体,直接存放在pbl中而不是依赖某对象存在。
然后把这个结构作为一个数据类型来使用就可以了。

welcome_to_ 2001-08-24
  • 打赏
  • 举报
回复
第一种方法好象不行
第二种方法中的
public:
a a_variablea
如果a为类定义的结构,在pb中是不允许使用public的
只能使用private:
紫焰月读 2001-08-24
  • 打赏
  • 举报
回复
其实就象API函数中的结构一样,
你仍需在外部声明一个结构,
然后传递给API函数
所以这样是无法封装进此类的,
因此你需要调用此实例的函数时,也得准备一个同此结构一样的结构,
即在类中定义一个类结构,
在外面同时也声明一个这样的结构,
类内部的结构的作用域仅在其内部,
是不能被外部使用的,所以不作全局结构则需同时在两个地方定义此结构。

另一个方法是在类 Instance Variables... 中定义
public:
a a_variablea
在调用函数前先改变此实例的a_variablea的值,这样就有比较好的封装性,
对于传递给 a_variablea 的值,为了更好的体现面向对象的要求,
可以使用 set、get的方式对传入值进行检测
这个方法应该比较合你的要求
Hanson_bati_zhu 2001-08-24
  • 打赏
  • 举报
回复
作用域的问题
得把结构定义在外面
同意上面说的

swordmanli 2001-08-24
  • 打赏
  • 举报
回复
我想尽可能把所有的东东都封装在一个对象中。

不太可能,就像不能把父类定义在子类内部一样

tigerwood12345 2001-08-23
  • 打赏
  • 举报
回复
一定是作用域的问题。定义成全局吧,应该没有问题了。
树木 2001-08-23
  • 打赏
  • 举报
回复
不知你如何提供参数的?
chinalht 2001-08-23
  • 打赏
  • 举报
回复
要把结构定义在外面。
swordmanli 2001-08-23
  • 打赏
  • 举报
回复

作用域的问题吧!你把结构定义在哪里?非可视对象的哪里?
你应该把结构定义在外面,不该定义在对象里。
samwcm 2001-08-23
  • 打赏
  • 举报
回复
把你的代码贴出来看看。。。。
pinglv 2001-08-23
  • 打赏
  • 举报
回复
up

1,108

社区成员

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

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