初始化对象时c++编译错误
c++ compile error when initializating an object
我是c++新手,需要帮助解决一个错误。下面的代码在旧的Sun版本(CC 5.3和5.8)上可以很好地编译。我在发生错误的行上加了注释。非常感谢任何协助。非常感谢。-
Unix版本:SunOS ut51278 5.10 Generic_141444-09 sun4u sparc SUNW, sparc - enterprise
编译版本:CC: Sun c++ 5.11 sunnos_sparc 2010/08/13
database.h:
#include <dbserver.h>
#include <dbstoredproc.h>
#include "dbsql.h"
class Database : public DBServer
{
public :
DBSql SQL( const char* sqlCmd );
DBSql SQL( const std::string& sqlCmd );
DBSql Table( const char* tableName );
DBSql Table( const std::string& tableName );
DBStoredProc storedProc( const char* spName );
DBStoredProc storedProc( const std::string& tableName );
};
dbsql.h:
#include <string>
#include "dbaccess.h"
#include "dbtable.h"
class DBSql : public DBAccess
{
public:
DBSql(DBServer *pServer,const char *sql) ;
DBSql(DBServer *pServer,const std::string& sql);
DBSql(DBSql& dbSql);
DBSql& operator=(DBSql& dbSql);
virtual DBTable getResultSet();
protected:
DBSql();
void init(DBServer *pServer,const std::string& sql);
};
database.cpp…见错误信息....
database.cpp:
#include <database.h>
#include "dbsql.h"
using namespace std;
DBSql Database::Table( const char* tableName )
{
return Table( string( tableName ) ); // Error: "Cannot use DBSql to initialize DBSql."
}
DBSql Database::Table( const string& tableName )
{
string sqlCmd = "select * from " + tableName;
return SQL( sqlCmd.c_str() );
}
DBSql Database::SQL( const char* sqlCmd )
{
return DBSql(this,sqlCmd);
}
DBSql Database::SQL( const string& sqlCmd )
{
return SQL( sqlCmd.c_str() );
}
DBStoredProc Database::storedProc( const char* spName )
{
return DBStoredProc( this, spName );
}
DBStoredProc Database::storedProc( const std::string& spName )
{
return DBStoredProc( this, spName );
}
dbsql.cpp:
#include "dbsql.h"
#include "dbcommon.h"
using namespace std;
using namespace ORACLE;
DBSql::DBSql(DBServer *pServer,const char* sql)
{
init(pServer,string(sql));
}
DBSql::DBSql(DBServer *pServer,const string& sql)
{
init(pServer,sql);
}
DBSql::DBSql(DBSql& dbSql)
: DBAccess(dbSql)
{
}
DBSql& DBSql::operator=(DBSql& dbSql)
{
DBAccess::assign(dbSql);
return *this;
}
DBSql::DBSql()
{
}
void DBSql::init(DBServer *pServer,const string& sql)
{
execSQL(pServer,sql.c_str());
}
DBTable DBSql::getResultSet()
{
DBTable result;
if(DBAccess::getResultSet(false))
{
//In order to prevent DBAccess from closing the previous result set, pass false to
//getResultSet
result = DBTable(m_pStmt,m_pResultSet,true); // Pass true to DBTable to allow it
m_pStmt = NULL; // to control the statement.
}
m_pResultSet = NULL;
return result;
}
变化:
DBSql(DBSql& dbSql);
:
DBSql(DBSql const & dbSql);
调用Table( string( tableName ) )
产生一个需要使用复制构造函数复制的临时对象,以便返回。由于该值是临时的,因此只能获得对它的const引用,而复制构造函数不接受这种引用。
DBSql& operator=(DBSql& dbSql);
更改为接受const引用- DBSql& operator=(DBSql const & dbSql);
-并在父类复制构造函数和赋值操作符中进行相同的更改。
相关文章:
- std::is_base_of表示ctor编译错误
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- 如何修复sfml c++代码编译错误
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- vscode下的Arduino代码出现意外编译错误
- 第三方 API 中的编译错误 - Visual Studio
- std::cout输出int时出现编译错误
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 提升图广度优先搜索前置编译错误
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- 我在C++中遇到了这个奇怪的编译错误
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 使用 std::enable_if 限制派生类的模板参数时出现编译错误
- 现代OpenGL和GLEW Libraray的编译错误
- C++ 编译错误:意外的类型名称"字符串":预期的表达式
- C ++程序编译错误,找不到/访问文件
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 为什么传递非静态成员函数会导致编译错误?