问题列表 - 第11565页

命名空间正确性

我试图在下面的简约示例中质疑我自己的代码正确性,其中头文件将标识符提升到当前命名空间.

#include <string>

namespace mine {

    using std::string; // std::string lifted into mine

    struct agent
    {
        string name;
    };
}
Run Code Online (Sandbox Code Playgroud)

这是我最近作为使用typedef的另一种替代方法的建议:

#include <string>

struct agent
{
    private:
        typedef std::string string;
    public:
        string name;
};
Run Code Online (Sandbox Code Playgroud)

我认为第一个选项更正确,因为它使用了我自己的命名空间,这是一个应该习惯的实践(命名空间创建和管理).Meanhile,因为标识符在我控制的命名空间内被提升,所以它使这成为一种安全的方法.

但是,我有第二个想法.例如,不小心使用命名空间,例如使用using指令,也会将std :: string带入视图.另一个问题是我暴露了std :: string太多了.甚至命名空间的地区矿山的地方是没有必要的或希望的.

在我看来,总是在尽可能低的范围内工作并从那里开始工作似乎更为正确.只暴露绝对必要的.我在第二个例子中将typedef设为私有的事实正是因为这个原因.但是后来我没有按照第二个例子的建议.

但在另一方面,我担心的事实有人可能会滥用命名空间导致:

using namespace mine;
Run Code Online (Sandbox Code Playgroud)

乍一看,我们知道这不是命名空间的正确使用模式.但不可否认,有些情况可能是可取的.您认为第一种方法的有效性如何?

c++ namespaces

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

当要求绘制第二个图表时(关闭第一个图表窗口后),Python Matplotlib挂起

奇怪的行为,我确定这是我搞砸了,但我想深入了解正在发生的事情:

我正在运行以下代码,使用matplotlib创建一个非常简单的图形窗口:

>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> ax.plot((1, 3, 1))
[<matplotlib.lines.Line2D object at 0x0290B750>]
>>> plt.show()
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,我得到了一个人们所期望的图表,在一个弹出的新窗口中,包含一条非常简单的蓝线,在y轴上从1回到1再回到1,其中0,1,2为x轴点(就像例子).现在我关闭图形窗口(使用窗口右上角的十字按钮).这让我可以控制解释器,然后我重新开始创建新对象:

>>>
>>> fig1 = plt.figure()
>>> bx = fig1.add_subplot(111)
>>> bx.plot((1, 3, 1))
[<matplotlib.lines.Line2D object at 0x029E8210>]
>>> plt.show()
Run Code Online (Sandbox Code Playgroud)

这一次,我得到一个窗框,里面没有任何东西(只是框架,没有白色背景),整个爆炸拍摄都挂了.我必须"结束任务",python解释器被系统终止,我得到一个命令提示符.在mac上的类似行为(除了它实际上首先绘制图形,然后也挂起).

所以Python和/或matplotlib不希望我手动关闭窗口.有人知道发生了什么,我应该做什么?我想做的是在解释器中使用不同的情节,显然这种行为没有帮助.我知道我可以使用"Ipython -pylab",但为了学习,我想了解上述错误.

谢谢.

python matplotlib

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

ComboBox不会失去焦点

我一直遇到ComboBox控件的问题.我不是GUI的专家,但我知道这个问题与控件的重点有关.

出于某种原因,当我点击它之外时,ComboBox不会失去焦点.比如说:

  1. 我点击ComboBox列出其项目.
  2. 我选择了一个项目.这关闭了ComboBox.
  3. 我点击第二个ComboBox,第一个保持专注.

要么

  1. 单击ComboBox(包含Point,Solid和Wireframe).
  2. 点击表格.按P,S或W.查看选择更改.

请注意,ComboBox只将DropDownStyle设置为ComboBoxStyle.DropDownList.这意味着它是默认的ComboBox行为.我认为默认行为是当你单击它或其他控件(按钮或ComboBox)时,ComboBox会失去焦点.这不是这种情况,为什么?

更新: 我需要的是某种ActiveComponent = null.如果您在标准工具栏中选择Debug或Release(ComboBox),则行为应类似于Visual Studio.目前,如果我点击ComboBox外部,它仍然是焦点.

.net c# combobox winforms

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

Exchange服务器不接受javax.mail API提供的用户名/密码

我有一个可爱的小Java客户端发送签名的电子邮件.我们有一台Exchange服务器,需要用户名/密码验证才能发送邮件.

当我连接到Exchange服务器时,我收到此错误:

avax.mail.AuthenticationFailedException: failed to connect
        at javax.mail.Service.connect(Service.java:322)
        at javax.mail.Service.connect(Service.java:172)
Run Code Online (Sandbox Code Playgroud)

当我连接到其他服务器(Unix服务器)时,我没有问题.

下面是完整的调试跟踪.我无法弄清楚.

DEBUG: JavaMail version 1.4.2
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SM}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], }
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "SERVER", port 25, isSSL false
220 SERVER ESMTP (deca81216f2ecf4fd6fedb030e3dcfd0)
DEBUG SMTP: connected to host …
Run Code Online (Sandbox Code Playgroud)

java email exchange-server javax.mail smtp-auth

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

包含名称空间的XML元素的XDocument或XElement解析

我尝试读取从log4net UdpAppender捕获的以下字符串.

<log4net:event logger="TestingTransmitter.Program" 
               timestamp="2009-08-02T17:50:18.928+01:00" 
               level="ERROR" 
               thread="9" 
               domain="TestingTransmitter.vshost.exe" 
               username="domain\user">
    <log4net:message>Log entry 103</log4net:message>
    <log4net:properties>
        <log4net:data name="log4net:HostName" value="machine" />
    </log4net:properties>
</log4net:event>
Run Code Online (Sandbox Code Playgroud)

在尝试XElement.Parse或XDocument.Parse内容时,它会抛出异常:

'log4net'是未声明的命名空间.第1行,第2位.

我知道我可以在原始字符串中搜索并替换"log4net:"并删除它,允许我成功解析XML,但是有更好的方法吗?这是捕获的完整数据(重新格式化以允许读取),没有制作或删除xml命名空间声明.

c# log4net linq-to-xml

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

C:你如何模拟'例外'?

我来自C#背景,但我现在正在学习C. 在C#中,当想要发出错误信号时,就会抛出异常.但你在C做什么?

比如说你有一个堆栈pushpop函数.什么是在a期间表示堆栈为空的最佳方式pop?你从这个功能返回什么?

double pop(void)
{
    if(sp > 0)
        return val[--sp];
    else {
        printf("error: stack empty\n");
        return 0.0;
    }
}
Run Code Online (Sandbox Code Playgroud)

K&R的第77页示例(上面的代码)返回一个0.0.但是,如果用户0.0在堆栈上推送了更早的内容,您如何知道堆栈是否为空或是否返回了正确的值?

c stack exception-handling

14
推荐指数
3
解决办法
2746
查看次数

ASP.NET +拒绝访问该路径

我有一个ASP.NET应用程序,它试图在运行时在Web服务器上写入文件.在我的开发环境中,这是有效的.但是,当我将它部署到生产服务器并执行代码时,我收到一条错误,指出:

"Access to the path 'C:\Inetpub\wwwroot\MyWebApp\DirToWriteTo\' is denied."
Run Code Online (Sandbox Code Playgroud)

我的生产服务器是Window Server 2003机器.Web应用程序设置为允许通过IUSR_TEMPLATE帐户进行匿名访问.

我究竟做错了什么?

谢谢!

asp.net

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

R中调解分析的循序渐进方法

我想知道是否有人可以提供如何使用Keele,Tingley,Yamamoto和Imai的调解包进行调解分析的一步一步.我认为有两种方法 - 经典Baron和Kenny(1986)以及Preacher,Rucker和Hayes(2007)的新方法 - 我想知道如何在R中做两种方法

algorithm statistics r

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

在vim中交换缓冲区时保持光标列

在vim中,如果使用:bn和:bp交换缓冲区,则光标停留在同一行上,但不在同一列上.有没有办法将它保持在同一列?

vim

7
推荐指数
1
解决办法
404
查看次数

浏览器内聊天如何工作?

只是好奇.浏览器中的聊天工作究竟如何?通常,如果用户访问网页,则他/她的web浏览器请求页面内容.服务器生成输出并将其发送到用户的计算机.但是通过聊天,它有点相反(完全不是).这不是用户从某个服务器请求聊天消息,而是直接发送它的服务器.现在使用"普通"服务器实现这一点非常简单,但服务器将其发送到浏览器的事情让我感到困惑.发布消息部分都很清楚,很简单.您只需将数据发布到服务器,例如ajax或其他东西.但是,另一台计算机如何立即"知道"消息已写入其中?显然必须是服务器一写完就将其发送到另一台计算机.但不知何故,这在我的大脑中无法计算.在我的大脑中,浏览器只会请求它们,它不仅仅是获取它们.你究竟是怎么做到的?

以gmail中的google talk为例.这是如何运作的?它是如何实现的?

browser chat

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