PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

admin 发表于 2015-2-3 09:18:14 |阅读模式

admin 楼主

2015-2-3 09:18:14

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

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

x
Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式
; q# e* n+ h+ _1 y# k. E9 [1 e3 h" o# k' I7 G

, J& \1 G& ?, _& G7 |; g% @+ Y1 变量声明( F- Y" r/ O5 B

; r, q$ y( L2 u, F" l
2 f0 `5 T4 j# n& M; d. S8 e
o Old way% G# b! T, S+ ~; M+ J
// Declare pointers for an Item, Form and vector of ModelObjects
1 K9 l8 ^' U  u/ o/ W% a, L// initialize to NULL% A9 K1 i1 I& x- k  D
Item *theItem = NULL;2 i5 |' r7 p. T" Q2 I! x1 A7 O
Form *theForm = NULL;1 G% Q+ F- L# z$ c" a
vector< ModelObject *> objects;
1 l/ e+ t) `# y8 u1 c* X2 U) h2 v6 V...
7 m/ J0 c4 Y. b// Use the Item8 D$ o# W: p2 O. O9 v9 n
theForm = theItem->get_item_master_tag();0 G$ @0 \# X: d# f' z: O5 K2 H) Y
objects = theItem->get_revision_list();
: L" u" t8 ]2 w; `+ q: i1 Po New way
  ~: T) {, n' f- }4 V7 }$ H% o- P2 K% J// Declare AutoPtr for an Item, Form and vector of ModelObjects! ^2 p) m8 X7 r& I) N
// all AutoPtrs are instantiated as NULL
$ h/ ]0 I( b6 tTeamcenter::Soa::Common::AutoPtr<Item> theItem;
; J8 a( a9 q+ }Teamcenter::Soa::Common::AutoPtr<Form> theForm;; ~% X: o$ |* y. e4 C
vector< Teamcenter::Soa::Common::AutoPtr <ModelObject> > objects;& z; d& H+ W" Y. g
// Use of the ModelObject variables remains unchanged% E4 C; d  |+ z& i
theForm = theItem->get_item_master_tag();& O  c! r0 x* M7 O1 X& G" u
objects = theItem->get_revision_list();! f) C) A* \. h' x; S

+ _! S* S( @8 b* ^! p+ x+ i9 l" s8 \$ u* e
2 类型转换
& n6 U4 {% j: ?3 Z4 }; `
# _  e9 r" Q6 E1 r8 {8 w0 {$ lo Old way
8 B' t2 S, Z: {9 p. r3 q# ~( P$ I// Declare the variables
8 D4 s! m) ^; a8 h8 [User *user;" P2 K" _7 q& K  w. X
ModelObject *anObj;
1 P) r7 ]* j% O6 `" yFolder *folder;
7 K% P( E& _' i0 luser = sessionService->login(name,pass, “”,””, descrim ).user;
' t! V; c) |. Z, Y# r% ?& _// Cast to the base ModelObject class
7 Z1 o! y9 N. F( e, a1 B$ M& canObj = (ModelObject*)user;9 p; G2 y. A) k" ?9 z' w" q
// Cast to a speicfic sub-type, if not NULL
( g  T9 V% N4 g( p% K// do something with the new pointer
3 V$ d  L6 |6 r7 huser = dynamic_cast<User*>(anObj);
4 `1 [+ p6 s( u* E1 f0 Lif(user != NULL)
, s3 j7 h8 t+ s{  t# l/ L* H$ V$ b% t
folder = user->get_home_folder();
3 [3 ^$ h+ @3 I# c6 v6 _* U}% W# o; D' c4 I7 y& J
o New way
" d- q$ e( V& v9 [// Declare the variables% K: U3 O9 K( x5 a
Teamcenter::Soa::Common::AutoPtr<User> user;  [+ H9 \% \! f% K/ e
Teamcenter::Soa::Common::AutoPtr<ModelObject> anObj;
+ Q0 X% X$ F9 i2 M  k/ x) wTeamcenter::Soa::Common::AutoPtr<Folder> folder;
" g( g. q) I( S( W1 s# Ouser = sessionService->login(name,pass, “”,””, descrim ).user;% A0 ^* ^% z% c: J$ z' w4 S
// Cast to the base ModelObject class% i* D" U( f& E$ x# h- t
anObj = user.cast<ModelObject>();
  {% _- Q/ n, w// Put the cast to a speicfic sub-type, in a try/caTCh block) ?4 j! Q. c& d0 h( K: }
// if std::bad_cast not thrown, then cast was successful
8 j: @, h$ r7 P: M* Ktry
  i, Y/ K" m; B$ I; X4 [' u/ p{  A' ^, B* d3 o& ^4 J
user = anObj.dyn_cast< User >();  z; w3 U+ z6 F& p' J% Y2 m) B
folder = user->get_home_folder();& _3 z) y. z4 J5 U, R5 w
}
0 G- X6 w: C+ w2 H; z. C  ^& f/ ncatch(std::bad_cast&){}
3 q9 f+ {9 d8 L* s3 ?" G( v0 M( L: j8 |  F- h6 B0 C
2 y( m9 e. ?$ }! j, d0 @
3 关于NULL 赋值2 V* }! \! ?: V( B; r2 E! Z
" r  n' g( X4 k! d  }- _. V) |
o Old way
+ B8 u, a) C, I8 K; O6 @  C! F2 f* \// Declare the variables; C& m# P! H+ J& d, f
LoginResponse response;
* ~: _* D2 V; i$ k( o+ b$ yUser * user;) u: \0 c0 ~0 B6 C$ J: q
// Call a service that returns a ModelObject (User)
; |( O0 A" }9 D. T# x% ]1 ^1-28 Services Guide PLM00076 Jresponse = sessionService->login(name,pass, “”,””, descrim );
) J- {! n* o9 \( b1 V& yuser = response.user;
' p9 {2 I' L/ u0 R. Y$ V. y// Test that instnace against NULL4 `8 z2 D) e1 |
if( user == NULL)
- _' v: O: u8 S+ z( Q+ V$ e{
; n1 G' @  I* I) D7 ]7 n5 E$ F...
' \5 V" c5 w& `% \/ y' J$ R5 d}
+ w/ ^4 X2 |, u; s4 Oelse
" D, v6 I8 r: ~( s! e/ e" ?- V( `, ]{
% A6 a2 T: c! v// Assign NULL to the pointer" D7 O( {2 i  h1 G" ~- ~/ t
user = NULL;$ l  [$ R% V  }/ X. G  O  M
}
! n% _2 f6 Z4 l7 u. o2 I/ V. ?3 ao New way
& ~% V; N" x5 c// Declare the variables. Z7 n7 X" J, D
// The service data structures do not change, only9 n/ J4 Y! t! J" q0 D
// references to ModelObjects
; j9 h6 N& e" d( |- H0 e. i1 P( C5 C* p; X, BLoginResponse response;
/ w' b& @/ X* A4 ~' a( E1 v, t) h: MTeamcenter::Soa::Common::AutoPtr<User> user;# _! m" H' V. M
// Call a service that returns a ModelObject (User): s7 w# ?# {; f$ J9 |
response = sessionService->login(name,pass, “”,””, descrim );( Q# F2 c+ E# r6 w3 Y
user = response.user;- Q8 Y4 H/ j, g) s
// Since we are not dealing directly with pointers," A: B" H: m6 x: Q  U! q$ l  i
// NULL does not make sense here, use the isNull method from the, l4 a0 I# M$ J# H  r9 `& u) Y" Q* k
// AutoPtr template class.
) [9 v- \0 l6 l3 F$ cif( user.isNull())6 f, |# w5 Z8 `! j1 M# @- D
{4 E# r% I3 D1 [; ~( I: _) |
...
/ G8 h0 Q# y8 h0 Q. Y; x$ z}- ^! ]% H( O; ^/ u
else& r% M! a8 U6 z
{
. P( \4 X# n) S% E3 j+ z// Release the instance and* k. H& k8 h3 ]% O7 _& y
user.release();
/ T6 Z5 B0 w4 J, B: ?# l9 Q8 A}
' `+ [& m0 b4 p% c. ]5 |" w; ?! Q- t

# W3 j7 M# O. O3 L9 _
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了