小编Ant*_*lić的帖子

Logger应该何时刷新?

我想知道Logging类何时或多久应该刷新它的流 - 为什么?它应该在每个日志之后刷新,还是等待流缓冲区填充然后刷新,或者介于两者之间?

为了进一步说明我的问题:

我的日志记录类包含对某些输入的引用std::ostream streamoperator<<输入.我能够在每一行输入之后进行冲洗,让我们说使用std::endl;- 但我不这样做,而是我use stream << "\n"只是强制换行.当流缓冲区已满或正在进行流/记录器破坏时,我会发生刷新.

c++ logging c++11

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

是否可以仅使用货物测试运行单元测试?

我有一个由 lib 和 bin 板条箱组成的工作区。运行货物test --lib会跳过二进制板条箱。

testing unit-testing rust

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

相互排斥的特征

我需要为操作序列创建操作。这些操作共享以下行为。它们可以被评估,并且在构造时它们可以由单个 i32 参数化(例如 Sum)或根本不参数化(例如 Id)。

我创建了一个特征操作。评估部分是微不足道的。

trait Operation {
    fn evaluate(&self, operand: i32) -> i32;
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何描述第二个需求。第一个选项是简单地让操作的具体实现处理该行为。

pub struct Id {}

impl Id {
    pub fn new() -> Id {
        Id {}
    }
}

impl Operation for Id {
    fn evaluate(&self, operand: i32) -> i32 {
        operand
    }
}

pub struct Sum {
    augend: i32,
}

impl Sum {
    pub fn new(augend: i32) -> Sum {
        Sum { augend }
    }
}

impl Operation for Sum {
    fn evaluate(&self, addend: …
Run Code Online (Sandbox Code Playgroud)

rust associated-types

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

观察者模式实现没有互惠引用和智能指针

我正在尝试实现Observer模式,但我不希望观察者通过维护引用列表来对我的程序安全负责ObservableSubject.

这意味着当Observer object生命结束时,我不想明确地调用ObservervableSubject::removeObserver(&object).

我想出了一个使用指针引用的想法ObservableSubject.

我的问题是:上面描述的实现和下面的尝试是否可行?在我的程序中发生了什么,我如何防止解除引用垃圾?

Apriori借口:这是一种理解C++的尝试,而不是应该具有实际用途或者优先于其他实现的东西.

我的解决方案:

// Example program
#include <iostream>
#include <string>
#include <vector>

class ObserverInterface {
public:
    virtual ~ObserverInterface() {};
    virtual void handleMessage() = 0;
};

class ObservableSubject
{
    std::vector<std::reference_wrapper<ObserverInterface*>> listeners;

public:
    void addObserver(ObserverInterface* obs)
    {
        if (&obs)
        {
            // is this a reference to the copied ptr?
            // still, why doesnt my guard in notify protect me
            this->listeners.push_back(obs);
        }
    }

    void removeObserver(ObserverInterface* obs)
    {
        // todo
    }

    void …
Run Code Online (Sandbox Code Playgroud)

c++ observer-pattern c++11

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