• 5488阅读
  • 7回复

菜鸟问个语法问题 [复制链接]

上一主题 下一主题
离线cabba
 
只看楼主 倒序阅读 楼主  发表于: 2010-01-11
if (QTextCodecFactoryInterface *factory
        = qobject_cast<QTextCodecFactoryInterface*>(loader()->instance(name)))
        return factory->create(name);
请问<QTextCodecFactoryInterface*>字段是什么意思,用到一对尖括号括起来?这儿也没有用到模板啊。
离线午小夜

只看该作者 1楼 发表于: 2010-01-11
Returns the given object (loader()->instance(name)) cast to type QTextCodecFactoryInterface* if the object (loader()->instance(name)) is of type QTextCodecFactoryInterface* (or of a subclass); otherwise returns 0. If object (loader()->instance(name)) is 0 then it will also return 0.

The class QTextCodecFactoryInterface must inherit (directly or indirectly) QObject and be declared with the Q_OBJECT macro.

The qobject_cast() function behaves similarly to the standard C++ dynamic_cast(), with the advantages that it doesn't require RTTI support and it works across dynamic library boundaries.
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线cabba
只看该作者 2楼 发表于: 2010-01-11
那就是类型转换吧,我也是这么猜测的,只是它弄一对尖括号括起来,我就发晕了。

原来是QT特有的语法,我还以为是C++语法呢。
离线dbzhang800

只看该作者 3楼 发表于: 2010-01-11
引用第2楼cabba于2010-01-11 14:30发表的  :
那就是类型转换吧,我也是这么猜测的,只是它弄一对尖括号括起来,我就发晕了。
原来是QT特有的语法,我还以为是C++语法呢。


建议找本C++的书看看


C++ 强制类型转换的一般形式如下:

cast-name<type>(expression);
离线wangxinus

只看该作者 4楼 发表于: 2010-01-11
引用第2楼cabba于2010-01-11 14:30发表的  :
那就是类型转换吧,我也是这么猜测的,只是它弄一对尖括号括起来,我就发晕了。
原来是QT特有的语法,我还以为是C++语法呢。


这可不是Qt特有的语法, 就是C++的语法, 而且就是模版实现的。
http://www.wangxinus.com
自己刚刚开的博客,欢迎来访!征友链!

网心幽思 - WangXinus' Home
不积跬步,无以致千里;不积小流,无以成江海。
离线cabba
只看该作者 5楼 发表于: 2010-01-11
是吗,我看的C++书上没有介绍这个啊。
离线cabba
只看该作者 6楼 发表于: 2010-01-12
引用第3楼dbzhang800于2010-01-11 15:08发表的  :
建议找本C++的书看看
C++ 强制类型转换的一般形式如下:
cast-name<type>(expression);


嗯,看来得找本大部头的C++书看看了,我手上这书没讲这么细。
另请问,4楼的网友说这个强制类型转换语句就是用模板实现的,我不明白,这里没有template和class关键字啊。
离线foxyz

只看该作者 7楼 发表于: 2010-01-12
调用的地方怎么可能有template呢? 你去看定义的地方不就看到了。
快速回复
限100 字节
 
上一个 下一个