问题列表 - 第17904页

c ++命名空间头痛

好的,这个问题已经发展了一些,我想尝试开始(过度)我正在拍摄的基本目标:

  • 在C++资源获取中创建包装旧C语言实体的库代码是初始化,并且还提供基本或更好的异常保证.
  • 使这段代码的客户端能够以非常自然的C++方式使用它,而不会为现有代码创建大量开销,将其转换为使用C++包装器对象(即自动转换为适当的遗留类型,采用传统类型的构造函数等.)
  • 限制库代码的名称空间影响.理想情况下,库有几个子命名空间,提供相关的功能,限制使用命名空间X类型声明的数量和影响 - 就像boost库一样(即使用细节命名空间只注入用户想要的那些符号)使用和隐藏那些作为实现细节的内容;还限制现有符号可能的新含义范围,以避免在用户代码中出现令人惊讶的隐式转换)
  • 要求客户明确要求库中那些他们实际想要注入其代码库的部分.这与限制包含图书馆标题的影响密切相关.客户端代码应该具有合理的控制级别,可以在编译代码时自动使用库的哪些部分进行名称解析.
  • 我自己的库代码不应该充斥着重构 - 脆弱的代码结构.如果库的头文件不必经常声明私有typedef以便访问库的该部分的其余部分,那将是理想的.或者换句话说:我希望我的库能够像我的客户在使用所述库时那样直观地编写.除了已明确"使用"的任何其他名称解析之外,名称解析还应包括定义库的名称空间.

我经常遇到这种情况,我正在寻找更好的方法......

我有一个类,C在命名空间N.C有一个成员,Free.它免费是C管理的东西,并允许C管理新事物.

有几个全局免费功能.在与C相同的名称空间N中也有一些辅助函数,其中一个函数是一个帮助者,它释放由C管理的东西,名为free.

所以我们有类似的东西:

namespace N {

void free(THING * thing);

class C
{
public:
  ... details omitted...
  free()
  { 
    free(m_thing); // <- how best to refer to N::free(THING&)
  }
}

} // namespace N
Run Code Online (Sandbox Code Playgroud)

我可以使用N :: free(m_thing).但这对我来说似乎很不幸.有没有办法引用类范围之外的但没有解析绝对命名空间(范围相对一步)?

在我看来,必须命名N :: free是令人讨厌的,因为如果这是一个独立的功能你就不必这么做.如果班级的方法名称恰好不同(例如处置),你也不需要.但是因为我使用了相同的名字,所以如果你放纵我的比喻,我就无法访问它而不必指定绝对路径的数量 - 而不是相对路径.

我讨厌绝对的道路.它们使名称空间中的移动变得非常脆弱,因此代码重构变得更加丑陋.此外,如何在函数体中命名事物的规则变得更加复杂,使用当前的规则集(正如我所理解的那样) - 不那么规律 - 在人们所期望的和作为程序员的人之间产生分裂.

是否有更好的方法来访问与类相同的命名空间中的独立函数,而不必绝对命名自由函数?

编辑:也许我应该用一个不太抽象的例子:

namespace Toolbox {
  namespace Windows {

// deallocates the given PIDL
void Free(ITEMIDLIST ** ppidl);

class Pidl
{
public:
    // …
Run Code Online (Sandbox Code Playgroud)

c++ namespaces

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

多个控制台一次

是否有捷径可寻?

我现在只使用控制台测试我的网络应用程序.最好的方法是从一个项目中获得多个控制台,然后按一下"立即调试"菜单项.

我可以像过去一样使用多个项目,但这看起来很笨重.理想情况下,我可以启动多个控制台实例(从同一个线程运行很好)并且在启动时不会覆盖其他控制台.并排发射会很棒!

我问的是多么实用?可能吗?

谢谢!

c# console

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

C#匿名类型

当我说匿名类型声明

var someType = new {Name ="Jon Skeet",年龄= 10};

然而关键字

var is  implicitly typed
Run Code Online (Sandbox Code Playgroud)

但是当我打印

Response.Write(someType.GetType().Name);
Run Code Online (Sandbox Code Playgroud)

它产生<>f__AnonymousType02 .这个符号<>与什么有关?

c# anonymous-types

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

展开其路径中包含环境变量的文件名

什么是扩展的最佳方式

${MyPath}/filename.txt to /home/user/filename.txt
Run Code Online (Sandbox Code Playgroud)

要么

%MyPath%/filename.txt to c:\Documents and settings\user\filename.txt
Run Code Online (Sandbox Code Playgroud)

遍历遍历路径字符串直接寻找环境变量?我看到wxWidgets有一个wxExpandEnvVars函数.在这种情况下我不能使用wxWidgets,所以我希望找到一个boost :: filesystem等价或类似的.我只使用主目录作为示例,我正在寻找通用路径扩展.

c++ wxwidgets boost-filesystem

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

使用like运算符进行Hibernate HQL查询

Seu以下映射

@Entity
public class User {

    private Integer id;

    @Id;
    private Integer getId() {
        return this.id;
    }

}
Run Code Online (Sandbox Code Playgroud)

注意id是一个Integer.现在我需要使用like运算符来进行这个HQL查询

Query query = sessionFactory.getCurrentSession().createQuery("from User u where u.id like :userId");
Run Code Online (Sandbox Code Playgroud)

ATT:它就像运营商NOT =(等于运营商)

然后我用

List<User> userList = query.setParameter("userId", userId + "%").list();
Run Code Online (Sandbox Code Playgroud)

但是没有用,因为Hibernate抱怨IllegalArgumentException发生了调用User.id的getter

即使我使用

query.setString("userId", userId + "%");
Run Code Online (Sandbox Code Playgroud)

这是行不通的

我应该用什么来传递查询?

hibernate hql sql-like

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

如何构建一个接受数千个持久网络连接的服务器?

我是关于在linux上构建一个服务器(我选择编程语言),它接受来自桌面软件的许多TCP/IP套接字持久连接.如何廉价而有效地完成这项工作?一台机器不能有超过60000个端口,所以如果我必须支持600k连接,那么我需要10个linux机箱?

由于每个连接所需的计算非常小(95%的空闲时间),一个linux盒已经可以处理600k我不想浪费金钱和资源运行10个盒子只是为了解决端口限制.

有任何想法吗?

linux performance networking network-programming

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

jquery后期绑定

我有一个代码在页面加载时绑定点击操作,它是一个链接.当我点击它时,它发送ajax请求并用jquery append()函数替换某些div中的内容.这个新内容有一个链接,我需要为它们绑定一些动作,但我不能..绑定我认为没有用,因为jquery追加不更新DOM树.我怎么能得到一个后期绑定?

javascript jquery

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

什么时候Ruby中的'eval`是合理的?

" 'eval'应该是令人讨厌的吗? "启发了这个:

大多数人都认为这eval很糟糕,并且在大多数情况下更优雅/更安全.

所以我想问:如果eval经常误用,是否真的需要作为语言功能?这是邪恶而不是好吗?

就个人而言,我发现它唯一有用的地方是插入配置文件中提供的字符串.

编辑:这个问题的目的是在eval是唯一或最佳解决方案时尽可能多地获得真实案例.所以,请不要进入"应该用语言限制程序员的创造力"的方向.

编辑2:当我说eval,当然我指的是eval字符串,而不是将红宝石块传递给instance_evalclass_eval.

ruby eval

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

C#ReadLine问题

我想要做的是,当人们使用我的程序命中输入没有任何东西在那里它不会导致错误这是程序的一部分:

Console.WriteLine("4.-Ya no quiero jugar >.<");
int opc = Convert.ToInt16(Console.ReadLine());

switch (opc)
{
    case 1:
        Console.WriteLine("omg");
        break;

    case 2:
        Console.WriteLine("wtf");
        break;

    default:
        Console.WriteLine("Cant do that  >.>");
        Console.ReadKey();
        break;

    etc.
}
Run Code Online (Sandbox Code Playgroud)

事情是使用整数,我试图这样做

string opc1=console.readline();

if (opc =="")
{
    console.writeline("nope,try again");
}
else
{ // Brace was omitted in original - Jon
    int opc = Convert.ToInt16(Console.ReadLine());

    switch (opc)

    blah blah.
Run Code Online (Sandbox Code Playgroud)

它的不同组合>.<和默认值不起作用

我希望有人可以帮我解决它.<

c# readline

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

.NET依赖关系管理和标记/分支

我的公司在确定管理构建,发布和分支的最佳方法时遇到了麻烦...我们的基本设置是我们有4个应用程序,我们维护2个WPF应用程序和2个ASP.NET应用程序,所有这4个应用程序共享公共库,所以目前他们都在一个文件夹/ trunk/{app1,app2,app3,app4}.

这使得分支/标记单个应用程序非常困难,因为您同时对所有4个应用程序进行分支,因此我们希望将其分为{app1,app2,app3,app4}/{trunk,tags,branches但是我们遇到了放置共享库的问题?

我们不能将共享库作为SVN外部因素,因为当你分支/标记时,分支仍然引用了trunk共享库,而不是让它们分支.

有小费吗?想法?

我们目前正在使用svn和cruisecontrol.net.

编辑:共享库现在经常更改,这就是为什么我们不能将它们用作svn externals到trunk,因为我们可能会在分支中更改它们.所以我们不能将它们用作二进制引用.

当库静态构建而不是包含源时,它也很难测试和调试.

c# svn cruisecontrol.net msbuild nant

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