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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
Teamcenter SOA开发中关于变量声明,转换等代码的新处理方式8 T3 [3 m7 I6 J0 ^. J

& V* B3 H) X" \' e% O8 {. R
6 l: L" [8 A3 v3 H3 g& q( t3 V
1 变量声明
$ Z* C5 D& Z' `/ n4 @5 b  {. [
0 k+ a- O$ H9 l9 L! a: i! c

7 z% k' I. Q* }0 }: Z" _3 Do Old way  {) K& V* a# Z, s
// Declare pointers for an Item, Form and vector of ModelObjects
$ Z2 @6 l4 \8 h% n# D// initialize to NULL
* i8 _; e# X* q4 d1 G6 CItem *theItem = NULL;
2 o+ x" h: g) g$ E/ ~, e5 C1 DForm *theForm = NULL;
1 \$ @! B5 z* S+ h3 G0 q- d$ ?vector< ModelObject *> objects;
% e; A. t5 x0 {) |" C...
, D; C$ x( S; ]4 u* Z// Use the Item
8 D$ Q" z5 C7 V6 }( D  z  YtheForm = theItem->get_item_master_tag();- H) k% ?2 R5 D( p) R5 E
objects = theItem->get_revision_list();
* U! G- o* |" q  X) {% e& y6 to New way) x; y# m( m* F! j4 b) R
// Declare AutoPtr for an Item, Form and vector of ModelObjects, T0 ^6 s! k! s6 k0 _
// all AutoPtrs are instantiated as NULL
, c. ]" D$ H5 a, OTeamcenter::Soa::Common::AutoPtr<Item> theItem;
% p* Y* e5 {* ]2 d' I. @5 iTeamcenter::Soa::Common::AutoPtr<Form> theForm;* b. |  ~6 H$ E" n
vector< Teamcenter::Soa::Common::AutoPtr <ModelObject> > objects;
0 n, V2 X9 k' d' j- L// Use of the ModelObject variables remains unchanged& t6 E) p: j3 o) c  r2 I' o' P
theForm = theItem->get_item_master_tag();
& k* S8 o$ F7 v6 dobjects = theItem->get_revision_list();
- g2 Z5 ?$ h9 E* V
# k) N' [4 f% f' t0 o! n+ }3 X/ U  H1 k0 H* O
2 类型转换 3 u# ?' l, V( L2 p/ C
. Q% M% f" }; P
o Old way
! n$ w5 x! l, a8 |: A; z9 K: G: Z// Declare the variables: C6 r/ U4 A9 u" ]! P5 m
User *user;! f( |# j% o* L& w/ g  a" p' q
ModelObject *anObj;
2 U  z3 I, u2 [, n" j# zFolder *folder;/ h- M) Q1 L8 k& z# W# J
user = sessionService->login(name,pass, “”,””, descrim ).user;, P5 q9 J' {4 u% P# y
// Cast to the base ModelObject class" M( [/ b: \! r
anObj = (ModelObject*)user;
* }3 k' g7 t) s6 I// Cast to a speicfic sub-type, if not NULL
6 C& c  d; ~' Q; h4 k8 P7 M# h* q// do something with the new pointer
3 x( p- _* e, I7 {3 U5 Cuser = dynamic_cast<User*>(anObj);
9 o& v4 H, l9 }+ G. C. ~if(user != NULL)
, Q$ ^2 D/ h, l5 L5 Y% Q1 {{
. g) d- R# W1 o$ hfolder = user->get_home_folder();9 h$ l" j, Y( H9 o
}
, S. \% U% {. O; V! a# R8 Eo New way. l6 ^& y& E+ |! D# F  X6 M
// Declare the variables
  ?  p& a# T9 {( b' r, F$ y2 mTeamcenter::Soa::Common::AutoPtr<User> user;
9 z( a  b* W3 `  @( eTeamcenter::Soa::Common::AutoPtr<ModelObject> anObj;8 |& t5 R+ S( Q  K1 _& r
Teamcenter::Soa::Common::AutoPtr<Folder> folder;
: o' t* n: |3 Z& G! k+ s' quser = sessionService->login(name,pass, “”,””, descrim ).user;2 d: E  m+ S% L- t$ k% P$ W/ m
// Cast to the base ModelObject class
" }4 z: @( a, S- E( danObj = user.cast<ModelObject>();
' j% t8 C# e# `- K7 P- x* G// Put the cast to a speicfic sub-type, in a try/caTCh block
& o, d# d7 }; k// if std::bad_cast not thrown, then cast was successful
& P+ ~2 g) \3 r/ U( _try
- ~9 R7 q. s* v7 k/ d1 V" d5 ^% x{
/ h4 B5 c' i3 P9 ^/ D$ S4 Uuser = anObj.dyn_cast< User >();& v2 K$ o/ e  ^% ^& c
folder = user->get_home_folder();+ ~3 g# {. p5 P( |: `
}
, a2 Z% M7 T5 h0 m3 Z; n5 Ocatch(std::bad_cast&){}
5 \3 Q& \$ P9 c, j, r8 M9 Q+ j- C/ R- y5 Q* Q$ T

" J  W7 Y# C5 m* z3 关于NULL 赋值
, r, ~5 ^( I* Q- \( Y4 Q6 V% n/ l7 Q1 o9 \2 ^7 t4 s4 @
o Old way8 H& m2 K# r: N7 _, F
// Declare the variables2 |& J7 r2 |. U, {1 D
LoginResponse response;
6 Y8 h7 l/ F% t2 I% b2 F. ?+ l0 iUser * user;# [5 ^; G: K$ W
// Call a service that returns a ModelObject (User)
2 d  p6 a  e3 a3 T, |1-28 Services Guide PLM00076 Jresponse = sessionService->login(name,pass, “”,””, descrim );+ P1 l  F, B6 o/ l* n
user = response.user;
' C) c( {, }. T' B$ h7 l7 p* m1 M// Test that instnace against NULL/ p" k4 l+ h* P" t/ l& Y' u
if( user == NULL)
0 Q5 {! Z6 O# d/ {$ s{
8 E9 M; k# P5 d...
0 h. G" V7 j4 w- b5 U+ }/ q}
5 o& l6 X3 p: Y. y' gelse
; @: O, o6 z, |& D' H{
4 L% S# X5 e2 b0 i% i6 I) W// Assign NULL to the pointer8 _" `3 I( z. L2 b; Y4 i6 w. ^
user = NULL;
7 l; h( z" ?6 |+ R0 h% ^}
* q" c9 Y( `, S3 B! Vo New way
! R/ U. \4 t$ f: o" h// Declare the variables$ T, g+ w- D# b. _  t% V: K& h
// The service data structures do not change, only7 H& m6 v# O; {
// references to ModelObjects
3 `, b: F8 C  B) R5 gLoginResponse response;
- L2 i( z8 ]1 T* K, ]8 W2 P* ATeamcenter::Soa::Common::AutoPtr<User> user;2 e9 Y4 M- ^/ p4 B) h* K& F
// Call a service that returns a ModelObject (User)
( \0 @5 o2 O' n3 Lresponse = sessionService->login(name,pass, “”,””, descrim );) r$ D3 ]3 M8 d( o
user = response.user;
, d8 c) ^) H8 i7 v" o// Since we are not dealing directly with pointers,1 t3 ~" s1 J- ~% i0 F" T; E9 v, H
// NULL does not make sense here, use the isNull method from the
- P5 w6 X  W  M* c: W5 |9 L: B- t// AutoPtr template class.2 Y  C9 _( P1 i% e9 _+ E, j7 ^
if( user.isNull())
% [' i# i% [/ m+ s. F( j{
" ]. Q6 F7 a: x4 Q5 c1 ?7 L..." t% m+ h% o$ q0 w. g3 Z
}
2 t4 E* F$ O! Z8 H! Telse  v7 b4 k6 N5 G) d0 Y
{; a+ c1 K5 \  D) [) f* M- B9 K9 w
// Release the instance and
9 M5 w! ~  o1 f" |7 y6 L. Suser.release();
! R9 N6 P; s9 d& N" l8 `) a}. l$ r7 I; p' K$ t* J' t$ ?

$ Z8 W4 f* q; K0 `" ]. y: k

5 q% O9 g8 y( ?6 }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了