compile error
Apr 23, 2011 at 5:20pm UTC
Hi.
Am new to c++ and need expert help in resolving error mentioned below.
The code below compiles fine on older Sun versions (CC 5.3 and 5.8).
Thanks so much.
-RW
Unix version: SunOS ut51278 5.10 Generic_141444-09 sun4u sparc SUNW,SPARC-Enterprise
Compiler version: CC: Sun C++ 5.11 SunOS_sparc 2010/08/13
database.h:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#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);
};
Lines 7,12,16,and 20 in database.cpp are getting error "Cannot use DBSql to initialize DBSql."
database.cpp:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#include <database.h>
#include "dbsql.h"
using namespace std;
DBSql Database::Table( const char * tableName )
{
return Table( string( tableName ) );
}
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#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;
}
Last edited on Apr 23, 2011 at 5:48pm UTC
Apr 23, 2011 at 11:10pm UTC
1 2 3 4
DBSql Database::Table( const char * tableName )
{
return Table( string( tableName ) );
}
The function Table returns a DBSql object.
return Table( string( tableName ) );
means Table should be recursively called until that stack is exhausted. At that point it attempts to return a DBSql object will fail. Hence the compilation error.
The errors at the other lines are similar in nature
Topic archived. No new replies allowed.