小编Gra*_*eme的帖子

为Python记录器格式化输出编写单元测试

你怎么能用Python编写一个单元测试来测试记录器的输出确实是你期望的格式(即通过调用logging.basicConfig()来设置)?我正在考虑自定义StreamHandler并使用're'库,但它看起来不像传递给StreamHandler.emit()的LogRecord可以给我输出的字符串.

python logging unit-testing

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

协议缓冲区 - 读取所有消息中共同的标头(嵌套消息)

我目前正在评估在项目中使用的协议缓冲区(目前还没有编写代码).我不清楚的一件事是你如何阅读编码信息的一部分,例如说我有一个共同的标题:

message Header {
  required uint16 msg_type = 1;
  required uint16 length = 2;
}
Run Code Online (Sandbox Code Playgroud)

并说我向队列传递了多个不同的消息.消费者如何计算出每条消息要读取多少数据以及应该构造哪种消息类型?

c++ protocol-buffers

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

组合数据和锁定时不可能是const-correct?

我一直在研究如何组合一个数据,这些数据将由多个线程访问,同时为线程安全提供锁定.我想我已经达到了这样一个程度,即我认为不可能在保持常态的同时做到这一点.

以下面的类为例:

template <typename TType, typename TMutex>
class basic_lockable_type
{

public:
    typedef TMutex lock_type;

public:
    template <typename... TArgs>
    explicit basic_lockable_type(TArgs&&... args)
        : TType(std::forward<TArgs...>(args)...) {}

    TType& data() { return data_; }
    const TType& data() const { return data_; }

    void lock() { mutex_.lock(); }
    void unlock() { mutex_.unlock(); }

private:
    TType           data_;
    mutable TMutex  mutex_;

};

typedef basic_lockable_type<std::vector<int>, std::mutex> vector_with_lock;
Run Code Online (Sandbox Code Playgroud)

在这里我尝试将数据和锁定结合起来,标记mutex_mutable.不幸的是,这是我看不到的,因为在使用时,vector_with_lock必须将其标记为mutable从一个const不完全正确的函数(data_应该mutable来自const)执行读操作.

void print_values() const
{
    std::lock_guard<vector_with_lock> lock(values_); …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading mutable thread-safety c++11

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

停止调用析构函数

我有一个类,我正在重载new和删除(这些从内存池获取和返回内存).令我感到沮丧的是,我重载的类仍然在调用delete重载函数之前调用了析构函数.我怎么能阻止这个?

class Message
{
    ~Message() { ... }

    void* operator new(std::size_t sz) { ... }
    void operator delete(void* ptr) { ... }
};
Run Code Online (Sandbox Code Playgroud)

编辑:

我认为类的成员会被破坏但是破坏者不会释放记忆,这是正确的; delete函数拥有这个责任,在这种情况下,我可以阻止内存被释放?

结果: Penny拒绝了内存和构造/销毁的分配/释放是单独的项目.我现在有空的析构函数和重载的新/删除.

c++

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

从多个模块聚合多个测试用例以在PyDev TestRunner中运行

从多个模块聚合测试用例的最佳方法是什么,以便单个测试运行将全部执行它们并在PyDev UnitTest窗口中显示结果?

python unit-testing pydev

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

C++ <map> vs <unordered_map> vs <tr1/unordered_map> vs <ext/unordered_map>

我正在寻找一个更好的替代std :: map并且遇到帖子标题中提到的类.有人可以澄清它们之间的差异,不是在性能/ API方面,而是在它们与当前和未来标准相关的方面.

c++ unordered-map tr1 c++11

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

使std :: map key const有意义吗?

在定义a时std::map,是否有必要制作密钥类型const

c++ const map

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

在C++中构造对象时有两个隐式转换是否有效?

鉴于以下两个构造函数签名,是否可以构造一个Couplewith Couple("George", "Nora")?我的编译器抱怨下面显示的错误.如果我用Couple(std::string("George"), std::string("Nora"))它调用它编译好.我猜这是一个隐式转换的问题让我感到惊讶,因为我虽然char*to string也没关系.

class Person
{
    public:
        Person(const std::string& name);
};

class Couple
{
    public:
        Coordinate(const Person& p1, const Person& p2, const Optional<Person>& = Optional<Person>());
};

TestCouple.cpp:69: error: no matching function for call to `Couple::Couple(const char[7], const char[5])'
TestCouple.h:24: note: candidates are: Couple::Couple(const Person&, const Person&, const Optional<fox::Person>&)
Run Code Online (Sandbox Code Playgroud)

c++ constructor implicit-conversion

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

使用基于模板的构造函数构造std :: function

是否可以std::function使用模板参数定义的类型的构造函数构造?

例如:

template <typename T>
bool registerType()
{
    const std::function<T()> func = &T::T; //I know this doesn't work
    //...
}
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11 std-function

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

如何转换重载的自由函数来解决过载冲突?

假设您有2个免费功能:

void do_something(dog d);
void do_something(cat c);
Run Code Online (Sandbox Code Playgroud)

不,你想将这些函数传递给模板化函数:

template <typename DoSomethingFunc>
void do_something_template(DoSomethingFunc func);
Run Code Online (Sandbox Code Playgroud)

do_something_template以避免重载解决冲突的方式调用的首选方法是什么?它会铸造吗?

c++

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