在基类和子类中“使用Shared = std :: shared_ptr <>”的问题

问题描述 投票:0回答:1

我只是解决了在基类和子类中“使用Shared”引起的错误。像这样:

class B: public A {
public:
    /**
     * Attention! This "using Shared" should be located before "using ResCallback " because
     * in class A, there is also a "using Shared".
     */
    using Shared = std::shared_ptr<B>;

    using ResCallback = std::function<void(const C& c, const char* data, size_t size, Shared b)>;

在另一个文件中,有A类:

class A {
public:
    using Shared = std::shared_ptr<A>;

[过去,我将“ using ResCallback”放在“ using Shared”之前,这引起了问题。这使我怀疑“使用共享”。有没有更好的设计风格来避免这种愚蠢的错误源?

c++ c++11 shared-ptr using
1个回答
0
投票

如您所见,[在基类和派生类中具有相同的类型名称,但是引用不同的类型是潜在的问题根源。

我将避免在两个类中使用相同的名称(Shared)。

© www.soinside.com 2019 - 2024. All rights reserved.