问题列表 - 第11601页

C++ 编译时程序范围内的唯一编号

我想出了一个问题的解决方案,但我不确定它是否总是有效或仅适用于我的编译器。首先,问题:我注意到在许多情况下,即使给定相同的类型,也希望每次使用时都重新实例化模板类(假设您的模板类具有初始化为函数调用的静态成员)有一些重要的副作用——并且您希望每次使用模板时都会产生这种副作用)。最简单的方法是给你的模板一个额外的整数参数:

template<class T, class U, int uniqueify>
class foo
{
...
}
Run Code Online (Sandbox Code Playgroud)

但是现在您必须手动确保每次使用 foo 时都会为 uniqueify 传递一个不同的值。天真的解决方案是这样使用__LINE__

#define MY_MACRO_IMPL(line) foo<line>
#define MY_MACRO MY_MACRO_IMPL(__LINE__)
Run Code Online (Sandbox Code Playgroud)

不过这个解决方案有一个问题——__LINE__每个翻译单元都被重置。因此,如果两个翻译单元在同一行上使用模板,则模板只会实例化一次。这似乎不太可能,但想象一下,如果确实发生了编译器错误,那么调试它会有多困难。同样,您可以尝试__DATE__以某种方式用作参数,但它只有几秒钟的精度,而且是编译开始的时间,而不是到达该行的时间,因此如果您使用的是 make 的并行版本,则有两个翻译单元是相当合理的同__DATE__

另一种解决方案是一些编译器有一个特殊的非标准宏,__COUNTER__它从 0 开始,每次使用时递增。但它遇到了同样的问题——每次调用预处理器都会重置它,因此它会重置每个翻译单元。

另一种解决方案是一起使用__FILE____LINE__

#define MY_MACRO_IMPL(file, line) foo<T, U, file, line>
#define MY_MACRO MY_MACRO_IMPL(T, U, __FILE__, __LINE__)
Run Code Online (Sandbox Code Playgroud)

但是您不能根据标准将字符文字作为模板参数传递,因为它们没有外部链接。

即使这确实有效,__FILE__标准中也没有定义是包含文件的绝对路径还是仅包含文件本身的名称,因此如果您在不同的文件夹中有两个相同的命名文件,这仍然可能会中断。所以这是我的解决方案:

#ifndef toast_unique_id_hpp_INCLUDED
#define toast_unique_id_hpp_INCLUDED

namespace {
namespace toast {
namespace detail {

template<int i>
struct translation_unit_unique {
    static int …
Run Code Online (Sandbox Code Playgroud)

c++ templates c-preprocessor

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

boost :: asio,异步读错误

由于某种原因,这会导致访问冲突,但是没有任何详细的文档/帮助,我不知道我在哪里做错了.由于我在boost网站上看​​到的应该是正确的,并且将每个asio :: write调用的内容从客户端打印到新行.客户似乎工作正常.虽然服务器崩溃,但它还没有发送任何东西.

访问冲突发生在第275行的basic_stream_socket.hpp中.原因似乎是对象(boost :: asio :: stream_socket_service)没有初始化(this指针的值是0xfeeefeee),但我不明白为什么事实并非如此.

节目输出:

启动服务器
Server :: startAccept()
Server :: handleAccept()
连接接受
Connection :: startRead()
Server :: startAccept()
Connection :: handleRead()
READ ERROR:I/O操作已中止,因为任一线程退出或应用程序请求
Connection :: startRead()

代码

#include "precompiled.h"
#include "db.h"
class Connection
    : public boost::enable_shared_from_this<Connection>
{
public:
    typedef boost::shared_ptr<Connection> Pointer;

    static Pointer create(boost::asio::io_service& ioService)
    {
        return Pointer(new Connection(ioService));
    }

    ip::tcp::socket& getSocket()
    {
        return socket;
    }

    void startRead()
    {
        std::cout << "Connection::startRead()" << std::endl;
        socket.async_read_some(boost::asio::buffer(readBuffer),
            boost::bind(&Connection::handleRead,this,_1,_2));
    }
private:
    Connection(asio::io_service& ioService)
        : socket(ioService)
    {
    }

    void …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-asio

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

Python 3.1中的GIL

有没有人知道Python 3.1中针对C++多线程集成的Global Interpreter Lock的命运

python multithreading gil

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

为什么结构不支持继承?

我知道.NET中的结构不支持继承,但不清楚为什么它们以这种方式受限.

什么技术原因阻止结构继承其他结构?

.net inheritance struct

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

没有Windows凭据的netTcpBinding?

我有一个机器控制应用程序,我有一台客户端计算机和五个服务器盒在机器子网上进行通信.没有域控制器.我想使用netTcpBinding来提供可靠性和事务支持.

当域控制器不存在时,是否可以使用此绑定进行用户名/密码验证?我不想使用证书,因为我不想管理900台计算机(150台机器)上的证书,这些计算机不会连接到办公室局域网.

wcf credentials nettcpbinding

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

.NET中的身份验证,授权,用户和角色管理以及一般安全性

我需要知道如何为C#应用程序实现一般安全性.在这方面我有什么选择?如果满足我的需求,我宁愿使用现有的框架 - 我不想重新发明轮子.

我的要求如下:

  • 通常的用户名/密码验证
  • 管理用户 - 为用户分配权限
  • 管理角色 - 将用户分配给角色,为角色分配权限
  • 用户根据用户名和角色授权

我正在寻找一个由.Net社区进行时间处理和使用的免费/开源框架/库.

我的应用程序采用客户端/服务器方法,服务器作为Windows服务运行,连接到SQL Server数据库.客户端和服务器之间的通信将通过WCF进行.

这是很重要的一件事是,我需要能够给特定用户或角色的权限分配给查看/更新/删除特定的实体,无论是客户或产品等.例如,杰克可以查看某些10的3客户,但只更新微软,雅虎和谷歌客户的详细信息,并且只能删除雅虎.

c# security authorization roles

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

重写JTree双击以防止节点扩展?

看起来有两种默认机制来扩展JTree中的文件夹节点.一种是单击节点旁边的展开/折叠图标.另一种方法是双击节点本身.

有没有办法阻止这第二种机制?我想重写双击一个节点上它确实是这样的东西(更新另一个显示器显示节点是上双击统计),并希望它不会展开/折叠树节点.(仅仅是明确的:我不想防止节点被展开/折叠,我只是想要求用户点击展开/折叠图标.)我怎样才能做到这一点?

java swing double-click jtree

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

是否有任何巧妙有效的算法来执行字符串分区空间的计算?

我正在研究一个统计项目,该项目涉及迭代所有可能的方法来对字符串集合进行分区并对每个字符串运行简单的计算.具体来说,每个可能的子字符串都有与之关联的概率,而我正试图获得分区中子字符串概率乘积的所有分区的总和.

例如,如果字符串是'abc',则可能存在'a','b','c','ab,'bc'和'abc'的概率.字符串有四种可能的分区:'abc','ab | c','a | bc'和'a | b | c'.算法需要找到每个分区的分量概率的乘积,然后对四个结果数求和.

目前,我已经编写了一个python迭代器,它使用分区的整数二进制表示(例如上面例子中的00,01,10,11),并简单地遍历整数.不幸的是,对于长度超过20个字符的字符串来说,这个速度非常慢.

任何人都可以想到一种聪明的方法来执行此操作,而不是一次只运行一个分区吗?我已经被困在这几天了.

回应一些评论,这里有一些更多信息:
字符串可以是任何东西,例如"foobar(foo2)" - 我们的字母表是小写字母数字加上所有三种类型的大括号("(","[","{ "),连字符和空格.
目标是得到给出单个"单词"可能性的字符串的可能性.所以L(S ='abc')= P('abc')+ P('ab')P(' c')+ P('a')P('bc')+ P('a')P('b')P('c')(这里"P('abc')"表示概率'word''abc',而"L(S ='abc')"是观察字符串'abc'的统计可能性.

python string partitioning

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

发明命令名称的好方法是什么?

我们正努力为我们的所有目的"开发人员助手"工具提出一个命令名称,我们正在我们的项目中使用它.这就像我们现有的一样的工具的包装cmakehg.命令的目的只是通过将多个命令合并为一个(例如,发布包)来使我们的生活更轻松.例如,我们有如下命令:

do conf
do build
do install
do publish
Run Code Online (Sandbox Code Playgroud)

我们已经考虑了一些模糊的名称do(如上所述)run,但很明显,它do是一个Linux bash命令并且run非常模糊.

我们希望我们的命令是2个字符短,最好 - 但谁认为我们问的是不可能的?有没有一种实用的方法可以检查命令名称的可用性(除了只是在终端中键入它们),还是仅仅选择一个并希望其他人不会使用它?我们什么都不担心?

command-line

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

如何在eclipse中输入unicode字符?

我在Linux中运行eclipse,而shift + control + U + 1 + 1 + 1 + 1在其他应用程序中运行(其中1111是所讨论的unicode字符的4位数字),就像firefox一样,它在eclipse中失败了.

我只想在我的Java字符串中添加一些特殊的字符.

eclipse linux unicode

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