PLM之家PLMHome-工业软件践行者

Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式

[复制链接]

2015-2-3 09:18:14 3887 0

2471

主题

1276

回帖

8万

积分

管理员

PLM之家站长

积分
82201
QQ
发表于 2015-2-3 09:18:14 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式1 {: k- R9 a0 f! t% c5 i6 T
' [" O0 \6 u  a. Z0 K% }

5 @/ c) j4 m4 t, r1 变量声明# |9 z+ {" `  v$ @% \; ?7 _- \( n

: v/ r3 C+ J: D  [, \
! [$ K$ Y: P: q5 M
o Old way
  R2 o. \2 p: U( [; Q. L0 M/ m// Declare pointers for an Item, Form and vector of ModelObjects) T1 P( C9 n2 g
// initialize to NULL- K9 N1 ]* G, X, c, R- x
Item *theItem = NULL;& q& k& S, i8 B0 h% K+ }9 m8 \
Form *theForm = NULL;
- q& B3 T/ H7 p0 }1 _) vvector< ModelObject *> objects;7 t0 `8 w& w# E2 r
...& w+ A; {$ x) `) s, X4 Y
// Use the Item5 c: ?3 N9 R8 q/ c9 ?- g8 A1 c
theForm = theItem->get_item_master_tag();
1 |  Z3 i% r! O6 h, t* @* |objects = theItem->get_revision_list();
; N& x$ t. D  s/ O+ _6 Eo New way1 V# V( B( t) e3 L% z5 u+ P; [
// Declare AutoPtr for an Item, Form and vector of ModelObjects' v3 }. q5 x8 n$ h3 k
// all AutoPtrs are instantiated as NULL
! D; g- Z7 s8 s9 ATeamcenter::Soa::Common::AutoPtr<Item> theItem;
. [+ ^$ S0 ?5 q, S7 _( F8 i" h2 bTeamcenter::Soa::Common::AutoPtr<Form> theForm;
+ j9 L, \" k8 |vector< Teamcenter::Soa::Common::AutoPtr <ModelObject> > objects;, L7 o5 R, }) N
// Use of the ModelObject variables remains unchanged
) f: V- U% r: o; OtheForm = theItem->get_item_master_tag();
3 m! K& b3 O: l4 q+ W( w, |objects = theItem->get_revision_list();! H% y9 Y$ t4 G0 S' M' k* {0 H, G7 ^

$ {" |8 U3 M% \: Q& q7 k. I& Y! \8 x- K
2 类型转换
7 O+ F1 ]; T5 \6 k, L/ }  o0 q! j% y" U
o Old way
2 W: h# N2 R7 G3 i5 h9 o: M// Declare the variables: U2 Y" H- C" Q' E  @
User *user;
' M' Z6 F0 q( v, WModelObject *anObj;, {  v: ~* k1 s) ]# _# k, d% H
Folder *folder;
3 i* s6 s/ R# z+ duser = sessionService->login(name,pass, “”,””, descrim ).user;' R6 E, R( w$ O9 D& Z5 w& I
// Cast to the base ModelObject class( d5 V8 v+ k0 H0 K: u2 I
anObj = (ModelObject*)user;
% ?7 c) a" u" p! V" L' y  n3 A% U// Cast to a speicfic sub-type, if not NULL
- }! C8 d$ E$ ]% z9 G! z8 s8 w" l// do something with the new pointer( v2 O/ F6 v6 h0 K7 G1 r; l
user = dynamic_cast<User*>(anObj);, U; `; O( @& d6 @
if(user != NULL)
# @( z$ g3 T6 [" m& R* u1 y2 ^{; a) |! a! [- W$ w0 i8 c  J
folder = user->get_home_folder();( J! X1 @7 a- R0 A! I+ V) C
}
5 e0 Y! V; J; u0 k* l9 V  Ao New way( ^( R' D/ s! Y; O- D2 r
// Declare the variables; {4 ?, B4 x7 ?% w" ]! h
Teamcenter::Soa::Common::AutoPtr<User> user;4 B. h% F" y% ?0 W
Teamcenter::Soa::Common::AutoPtr<ModelObject> anObj;
% R& p2 v( N- K# yTeamcenter::Soa::Common::AutoPtr<Folder> folder;# O  A$ Z( q2 c# ~2 j2 A
user = sessionService->login(name,pass, “”,””, descrim ).user;
6 E; e; z6 D/ Y) q& e, [# _& |4 R// Cast to the base ModelObject class2 V6 b8 ^2 L7 s
anObj = user.cast<ModelObject>();
9 U: T, L/ i  n0 U9 G6 @1 d! d// Put the cast to a speicfic sub-type, in a try/caTCh block1 h/ F) R, j* y4 w  Z# O& L
// if std::bad_cast not thrown, then cast was successful
$ x1 K! r' ~) H: Ztry
  J6 e* a! G, @! B0 i1 t1 ]# G7 K{. e5 D  P* q, C2 f: R
user = anObj.dyn_cast< User >();
; y0 ~0 n7 O! Wfolder = user->get_home_folder();9 x' e9 U/ {. O0 |2 y3 N
}
5 [6 v# `4 g6 ^' o- i# X# g: Wcatch(std::bad_cast&){}
* S- w# I7 j! P: x2 W" y$ ^8 I$ w

, a" b( _% V% F: ?: Y3 关于NULL 赋值
& ]8 y- f7 Q9 l
7 _% J. p: @& I. ]' s' ~* C( E4 O0 eo Old way
( z2 B7 a( G/ C7 q* C// Declare the variables. ]; G4 b4 z$ g' v  s$ R( H
LoginResponse response;
3 m' b" m6 k. `User * user;
$ k9 f+ ^5 e) b( x6 ^! `8 B// Call a service that returns a ModelObject (User). W! Q6 G; c' {% K( P
1-28 Services Guide PLM00076 Jresponse = sessionService->login(name,pass, “”,””, descrim );) A1 \+ r# G' \  x' r; A: `
user = response.user;' U3 n/ s0 V6 E
// Test that instnace against NULL
4 S9 n) t3 x) D8 A$ L: uif( user == NULL)5 i8 w/ c- S6 h* N4 B+ Z9 t3 ]  E( j5 k
{
7 v4 E% H+ }/ O$ n; A...* W0 @  @7 E5 n
}
  M8 `1 x/ g* k1 ~5 o( Q( ?4 Yelse
" U4 I# M/ x. `; d& ~' n{
" }9 G* n; R: }7 G4 B$ ^// Assign NULL to the pointer
- O$ i0 b# c$ H. r6 r0 Iuser = NULL;9 L5 g& y1 E3 i' [) e2 n; ?5 u
}6 b2 a# X, L+ {' [
o New way
+ a" a8 e3 ?) B- Z( f0 c// Declare the variables' b6 U* ]* e9 R5 r
// The service data structures do not change, only
. M; h/ N$ ]; z: ]+ n; h. ~// references to ModelObjects
1 P% l% j$ g! c- Y2 l8 s' T; Q( pLoginResponse response;5 {% X0 I' E. k( a
Teamcenter::Soa::Common::AutoPtr<User> user;, u. s: ]2 W2 s/ I! c! |
// Call a service that returns a ModelObject (User)# f+ ^- k  s% z" I- Q/ Z7 \& ~/ m( v
response = sessionService->login(name,pass, “”,””, descrim );
$ N2 P' p1 V8 i( Ouser = response.user;, P$ c- F- B8 |  i* u! b
// Since we are not dealing directly with pointers,
' Z$ Y8 W' m+ m6 m* e: `// NULL does not make sense here, use the isNull method from the
! s1 A3 n) x8 q// AutoPtr template class.! d" ?. j& _. J- q, z" p
if( user.isNull())
/ J& W/ V0 l% q* F  l6 ~# H) L{, }$ G4 g8 p) ?# z8 B0 \7 r
...* }$ w( k5 G) m% G
}
4 F! Z! `7 q  a* a3 N0 z7 Belse
' t$ z* |( m7 t3 T$ L, d{
- u: U) |( e* _! V4 p6 ]// Release the instance and* V2 @& q) j3 }; S$ W4 ^
user.release();
' F. H5 d0 H; [; W7 r& l0 G& x* Z4 |5 s}4 c: K" V! ?* I& r5 d
$ d" s- ]1 K  S1 t5 G

5 `/ n9 d( r2 L. S2 W0 H
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了