好的做法。存储来自矢量中的值的地址

时间:2017-05-28 20:44:24

标签: c++

以下是一个例子:

class Log
{
    void AddLogger(ILogger& oLogger) noexcept
    {
        m_oLoggers.emplace(&oTracer);
    }

    std::vector<ILogger*> m_oLoggers;
}

class FileLogger : public ILogger{}

FileLogger myLogger{};
Log myLog{};
myLog.AddLogger(myLogger);

此处myLoggermyLog具有相同的生命周期,因为它们位于相同的范围内。我使用指针向量,因为我不想复制我的Iloggers。但是,当必须共享对象时,使用值是否安全?也许我应该使用指针(聪明与否)将myLogger放入堆中而不是堆栈中?您有什么看法,是否有可能保持“价值语义”?

0 个答案:

没有答案