你怎么能用Python编写一个单元测试来测试记录器的输出确实是你期望的格式(即通过调用logging.basicConfig()来设置)?我正在考虑自定义StreamHandler并使用're'库,但它看起来不像传递给StreamHandler.emit()的LogRecord可以给我输出的字符串.
我目前正在评估在项目中使用的协议缓冲区(目前还没有编写代码).我不清楚的一件事是你如何阅读编码信息的一部分,例如说我有一个共同的标题:
message Header {
required uint16 msg_type = 1;
required uint16 length = 2;
}
Run Code Online (Sandbox Code Playgroud)
并说我向队列传递了多个不同的消息.消费者如何计算出每条消息要读取多少数据以及应该构造哪种消息类型?
我一直在研究如何组合一个数据,这些数据将由多个线程访问,同时为线程安全提供锁定.我想我已经达到了这样一个程度,即我认为不可能在保持常态的同时做到这一点.
以下面的类为例:
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) 我有一个类,我正在重载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拒绝了内存和构造/销毁的分配/释放是单独的项目.我现在有空的析构函数和重载的新/删除.
从多个模块聚合测试用例的最佳方法是什么,以便单个测试运行将全部执行它们并在PyDev UnitTest窗口中显示结果?
我正在寻找一个更好的替代std :: map并且遇到帖子标题中提到的类.有人可以澄清它们之间的差异,不是在性能/ API方面,而是在它们与当前和未来标准相关的方面.
鉴于以下两个构造函数签名,是否可以构造一个Couple
with 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) 是否可以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) 假设您有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++ ×8
c++11 ×3
python ×2
unit-testing ×2
const ×1
constructor ×1
logging ×1
map ×1
mutable ×1
pydev ×1
std-function ×1
templates ×1
tr1 ×1