Re: List of template classes
On Tuesday, 10 September 2013 22:54:15 UTC+3, Leigh Johnston wrote:
On 10/09/2013 20:40, Quinlan Morake wrote:
Good day,
I have the following code and am uncertain as to how it should best don=
e / thought of. I'm creating a "data access layer", and am aware that there=
are c++ libraries for this, but am just doing it for the practice. I would=
like to have a dbField class, that holds the various column info, that is =
the name, type and data. A dbClass would then hold a list of dbFields, mapp=
ing to the columns available in the table. The dbField will thus have diffe=
rent data depending on that of the database column, i.e. integer / varchar =
/ bit etc.
My implementation thinking is as follows
enum eDbFieldType
{
Varchar, Integer, Boolean
};
template <class T>
class dbField
{
private:
// Name of column in the database
QString fieldName;
// Column datatype
eDbFieldType dtColumn;
// Data the field contains
T data;
public:
void setData(T);
T getData();
};
class DbClass
{
private:
map<QString, dbField<> > mDbFields;
...
After loading the data from the database into the dbField, I may have t=
o do other things to it depending on its type, for example to base64 decode=
/encode, etc when getData() is called, and then return the data.
I figure I could use a void* for data, is that what is generally done i=
n this type of situation? I've read that templates are preferable to void* =
but is that the case here and can they be used? Or should I be thinking dif=
ferently and do something different? I'm ideally trying to avoid casting.
Take a look at boost.variant.
/Leigh
Thanks Leigh, will have a look. Is my thinking about it okay, as in, in thi=
s type of scenario, is that what is usually done?