これを調べてみましたが、自分の状況に合った解決策を見つけることができました。
だから私はmysqlフィールドのメタデータの基本的なラッパーを作ろうとしています:
#pragma once
#include <string>
#include <stdint.h>
#include <windows.h>
#include "mysql.h"
namespace escobar { namespace storage {
class mysql_field_metadata
{
private:
uint32_t result_index; /* For indexing the field for a mysql record. */
std::string name; /* The name of the column. */
std::string original_name; /* The original name of the column, if the name is an alias. */
std::string table; /* Name of the table */
std::string original_table; /* The original name of the table, if the table name is an alias. */
std::string database; /* The name of the database the table/record belongs to. */
uint32_t length; /* The length of the field. */
uint32_t max_length; /* The maximum length of the set. */
uint32_t decimals; /* Number of decimals used in the field. */
uint32_t charset; /* Table charset. */
enum enum_field_types type; /* The type of MYSQL data. */
public:
mysql_field_metadata(MYSQL_FIELD* field_data, uint32_t _result_index) :
result_index(_result_index), name(field_data->name),
original_name(field_data->org_name), table(field_data->table),
original_table(field_data->org_table), database(field_data->db),
length(field_data->length), max_length(field_data->max_length),
decimals(field_data->decimals), charset(field_data->charsetnr),
type(field_data->type)
{
}
~mysql_field_metadata(void) { }
std::string get_name(void) { return this->name; }
std::string get_original_name(void) { return this->original_name; }
std::string get_table(void) { return this->original_name; }
std::string get_original_table(void) { return this->original_table; }
std::string get_database(void) { return this->database; }
uint32_t get_length(void) { return this->length; }
uint32_t get_max_length(void) { return this->max_length; }
uint32_t get_decimals(void) { return this->decimals; }
uint32_t get_charset(void) { return this->charset; }
enum emum_field_types get_type(void) { return this->type; }
};
}}
ご覧のとおり、私の最後の関数は次のとおりです。
enum emum_field_types get_type(void) { return this->type; }
動作していないようです。次のエラーが発生します。
error C2440: 'return' : cannot convert from 'enum_field_types' to 'escobar::storage::emum_field_types'
1> Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)