小编dwi*_*ell的帖子

C++:为什么我的DerivedClass的构造不能访问BaseClass的的保护领域?

我有一个构造函数尝试初始化基类中的字段.编译器抱怨.该字段受到保护,因此派生类应具有访问权限.

//The base class: 

class BaseClass

{

public:

    BaseClass(std::string);
    BaseClass(const BaseClass& orig);
    virtual ~BaseClass();
    const std::string GetData() const;
    void SetData(const std::string& data);
protected:

    BaseClass();
    std::string m_data;

};

BaseClass::BaseClass(const std::string data) : m_data(data) { }

BaseClass::BaseClass() { } 

BaseClass::BaseClass(const BaseClass& orig) { }

BaseClass::~BaseClass() { }

void BaseClass::SetData(const std::string& data)
{
    m_data = data;
}

const std::string BaseClass::GetData() const
{
    return m_data;
}


//The derived class: 


class DerivedClass : public BaseClass
{

public:

    DerivedClass(std::string data);
    DerivedClass(const DerivedClass& orig);
    virtual ~DerivedClass();
private: …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance constructor protected access-specifier

30
推荐指数
2
解决办法
2万
查看次数

具有许可免费软件许可证的非关系嵌入式数据库?

非常感谢您花时间看我的问题.

(我知道这个问题非关系数据库的C++,但我的需求有点不同,它只有一个答案.)

我正在开发一个商业C++库,除其他外,它必须保留消息.我想通过编写自己的DBMS来避免重新发明轮子.不幸的是,我有以下限制标准:

  1. 它必须可以从C++中使用 - 我正在编写一个C++库.如果使它们工作的努力程度不是太高,那么绑定是可能可接受的.
  2. 我需要一个嵌入式数据库.独立无效.
  3. 我想避免使用关系数据库.除了对性能开销的担忧之外,作为不鼓励关系数据库的开发人员,还有我无法控制的技术政治.
  4. 我需要一个宽松的免费软件许可证.购买许可证很难,但客户不想让他的消息来源.
  5. 我想要一个已经建立的解决方案(至少有一段时间,超出实验阶段,已被多个项目使用).

遗憾的是,由于上述原因,这两个选择不起作用:-SQLite是关系型的-BerkeleyDB是GPL或商业

再次感谢您的帮助.

c++ database berkeley-db embedded-database

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