首页 > 解决方案 > 类中构造函数 ocilib::Resultset 的问题

问题描述

我有课:

#include "ocilib.hpp"
#include <string>

using namespace ocilib;

class Dao
{
public:

    Dao(std::string sqlQuery);

private:

    ocilib::Resultset rs;

};

以及构造函数的实现:

Dao::Dao(std::string sql_query)
{
    Environment::Initialize();
    Connection con("tra", "la", "la");
    Statement st(con);
    st.Execute(sql_query);

    rs = st.GetResultset();
}

但是 VS2019 说: 类“ocilib::Resultset”不存在默认构造函数。

我想将结果集对象存储为我的 DAO 类的变量,并在构造函数期间感受它。但看起来这样做不是一个选择。

使用 ocilib 创建 DAO 类的正确架构是什么?

标签: c++ocilib

解决方案


在您的程序中的某个其他点,您尝试调用 Doa 的默认构造函数,但是由于您已经实现了自己的构造函数,因此在您的 Doa 类中将没有默认构造函数。

第一个解决方案是实现一个默认构造函数:

Doa()=default; 

或者

Doa() {}

如果你必须在{}.

第二种解决方案是找到您尝试调用默认构造函数的位置。一个地方可能如下所示:

Doa d;

甚至更隐蔽,例如:

std::vector<Doa> d(5);

推荐阅读