问题列表 - 第27428页

此代码似乎实现了在C++中返回空引用

我的C++知识有些零碎.我正在重新编写一些代码.我更改了一个函数来返回对类型的引用.在里面,我根据传入的标识符查找对象,然后返回对象的引用(如果找到).当然,如果我找不到对象,我会遇到要返回的问题,并且在环顾网络时,许多人声称在C++中返回"空引用"是不可能的.基于这个建议,我尝试了返回成功/失败布尔值的技巧,并使对象引用为out参数.但是,我遇到了需要初始化我将作为实际参数传递的引用的障碍,当然也没有办法做到这一点.我退回到通常只返回指针的方法.

我问了一位同事.他经常使用以下技巧,这是最新版本的Sun编译器和gcc都接受的:

MyType& someFunc(int id)
{
  // successful case here:
  // ...

  // fail case:
  return *static_cast<MyType*>(0);
}

// Use:

...
MyType& mt = somefunc(myIdNum);

if (&mt) // test for "null reference"
{
  // whatever
}
...
Run Code Online (Sandbox Code Playgroud)

我一直在维护这个代码库,但我发现我没有足够的时间来查找我想要的语言的小细节.我一直在挖掘我的参考书,但这个答案让我望而却步.

现在,我在几年前开设了一门C++课程,其中我们强调在C++中,一切都是类型,所以我在考虑事情时会尽量记住这一点.解构表达式:" static_cast <MyType >(0);",在我看来,我们确实采用了字面零,将其转换为指向MyType的指针(使其成为空指针),然后应用解除引用运算符分配给引用类型(返回类型)的上下文,它应该为我提供对指针指向的同一对象的引用.这看起来像是向我返回一个空引用.

任何解释为什么这个工作(或为什么不应该)的建议将不胜感激.

谢谢,查克

c++

13
推荐指数
4
解决办法
2019
查看次数

以编程方式关闭MenuStrip

我有一个添加到窗体的MenuStrip,并且在其中的一个下拉菜单中,有一个文本框。当我在文本框上按Enter键时,我要运行一个函数,然后关闭下拉菜单。我知道如何完成输入部分,但是我不知道如何关闭MenuStrip下拉菜单。

c# forms windows menustrip

4
推荐指数
1
解决办法
6742
查看次数

检查字符串中的有效域名?

我正在使用python,并希望使用简单的api或regex来检查域名的有效性.根据有效性,我是语法有效性,而不是域名是否实际存在于互联网上.

python regex api domain-name

10
推荐指数
2
解决办法
2万
查看次数

如何突出显示ListBox中匹配的子字符串?

我有一个TextBox和一个用于搜索数据集合的列表框.在列表框中搜索文本时,如果在列表中的任何位置找到匹配的字符串,则应以粗体显示为绿色.

例如.我有像"依赖属性,自定义属性,普通属性"这样的字符串集合.如果我在搜索文本框中输入"prop",则所有带有"prop"的三个(只有单词Prop)应该是粗体,其颜色应该是绿色.知道如何做到这一点?

列表框内的数据使用DataTemplate表示.

wpf listbox

5
推荐指数
1
解决办法
2564
查看次数

在Android手机上安装大型APK应用程序

我有一个大小为130MB的应用程序。当我尝试安装其显示内存不足的错误时。但是我内部存储器的可用空间还剩170MB。如何安装此应用程序?该应用程序的大小很大,因为它包含许多媒体文件。在Motorolla droid中得到安装。但在Nexus One上,会出现此错误。

android

5
推荐指数
1
解决办法
2181
查看次数

GUI框架如何工作?

我一直在网上寻找答案,我的问题是:GUI框架如何工作?例如,Qt是如何工作的,是否有关于从头开始编写GUI框架主题的书籍或wibsites?并且框架还必须从操作系统GUI框架调用方法吗?

- 感谢任何一个花时间尝试回答这个问题的人,如果我拼错了任何东西,请原谅我.

graphics user-interface frameworks

7
推荐指数
2
解决办法
5324
查看次数

将JavaScript变量传递给Python

例如:

#!/usr/bin/python
print "This is python."

print "<script type="text/javascript">
          var pass_to_python = new Number(7)
       </script>"

the_number = pass_to_python???
Run Code Online (Sandbox Code Playgroud)

如何在python中获取pass_to_python?

javascript python

7
推荐指数
2
解决办法
2万
查看次数

如何拆分单词并在C#中获取4个字母的前缀

我有一个用户名= LICTowner.

我需要从LICTowner这个词得到前缀,即LICT.

如何分割单词并获得4个字母的前缀.

在asp.net中使用C#

c# asp.net string

-2
推荐指数
1
解决办法
2632
查看次数

重复的符号错误C++

我在我的文件中添加了一些const字符.我得到的错误是重复符号_xyz(说).它有什么问题,我怎么能摆脱这个问题.

const char* xyz = "xyz";
class Abc
{
public:
    Abc()
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

c++

32
推荐指数
3
解决办法
2万
查看次数

TortoiseSVN:好'补丁文件'查看器?

默认的补丁文件查看器很乱(即没有并排差异视图等).我尝试在"设置 - >统一差异查看器 - >自定义"中设置beyondCompare exe的路径,但是超越比较也与默认差异工具相同.有没有办法在补丁文件中至少允许并排差异?如果是这样,方法是什么?我的目的是允许通过电子邮件发送更改,以便在我提交之前对其进行审核:)

米沙勒

diff tortoisesvn beyondcompare

19
推荐指数
3
解决办法
2万
查看次数