我试图在下面的简约示例中质疑我自己的代码正确性,其中头文件将标识符提升到当前命名空间.
#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)
乍一看,我们知道这不是命名空间的正确使用模式.但不可否认,有些情况可能是可取的.您认为第一种方法的有效性如何?
奇怪的行为,我确定这是我搞砸了,但我想深入了解正在发生的事情:
我正在运行以下代码,使用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",但为了学习,我想了解上述错误.
谢谢.
我一直遇到ComboBox控件的问题.我不是GUI的专家,但我知道这个问题与控件的重点有关.
出于某种原因,当我点击它之外时,ComboBox不会失去焦点.比如说:
要么
请注意,ComboBox只将DropDownStyle设置为ComboBoxStyle.DropDownList.这意味着它是默认的ComboBox行为.我认为默认行为是当你单击它或其他控件(按钮或ComboBox)时,ComboBox会失去焦点.这不是这种情况,为什么?
更新: 我需要的是某种ActiveComponent = null.如果您在标准工具栏中选择Debug或Release(ComboBox),则行为应类似于Visual Studio.目前,如果我点击ComboBox外部,它仍然是焦点.
我有一个可爱的小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) 我尝试读取从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#背景,但我现在正在学习C. 在C#中,当想要发出错误信号时,就会抛出异常.但你在C做什么?
比如说你有一个堆栈push和pop函数.什么是在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在堆栈上推送了更早的内容,您如何知道堆栈是否为空或是否返回了正确的值?
我有一个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帐户进行匿名访问.
我究竟做错了什么?
谢谢!
我想知道是否有人可以提供如何使用Keele,Tingley,Yamamoto和Imai的调解包进行调解分析的一步一步.我认为有两种方法 - 经典Baron和Kenny(1986)以及Preacher,Rucker和Hayes(2007)的新方法 - 我想知道如何在R中做两种方法
只是好奇.浏览器中的聊天工作究竟如何?通常,如果用户访问网页,则他/她的web浏览器请求页面内容.服务器生成输出并将其发送到用户的计算机.但是通过聊天,它有点相反(完全不是).这不是用户从某个服务器请求聊天消息,而是直接发送它的服务器.现在使用"普通"服务器实现这一点非常简单,但服务器将其发送到浏览器的事情让我感到困惑.发布消息部分都很清楚,很简单.您只需将数据发布到服务器,例如ajax或其他东西.但是,另一台计算机如何立即"知道"消息已写入其中?显然必须是服务器一写完就将其发送到另一台计算机.但不知何故,这在我的大脑中无法计算.在我的大脑中,浏览器只会请求它们,它不仅仅是获取它们.你究竟是怎么做到的?
以gmail中的google talk为例.这是如何运作的?它是如何实现的?
c# ×2
.net ×1
algorithm ×1
asp.net ×1
browser ×1
c ×1
c++ ×1
chat ×1
combobox ×1
email ×1
java ×1
javax.mail ×1
linq-to-xml ×1
log4net ×1
matplotlib ×1
namespaces ×1
python ×1
r ×1
smtp-auth ×1
stack ×1
statistics ×1
vim ×1
winforms ×1