-1
class MySqlDbFactory: public DbDatabaseFactory{
public:
IConnection* CreateConnection(){
return new MySqlDbConnection();
}
ICommand* CreateCommand(){
return new MySqlDbCommand();
}
};
class Factory{
DbDatabaseFactory* _databaseFactory;
IConnection* _connection;
ICommand* _command;
public:
Factory(DbDatabaseFactory*);
void Start(){
_connection->Connect();
if(_connection->connectionState == true){
_command->Execute("SELECT ...");
}
};
};
Factory::Factory(DbDatabaseFactory* dbFactory)
{
_databaseFactory = dbFactory;
_connection = dbFactory->CreateConnection();
_command = dbFactory->CreateCommand();
}
int main(int argc, char *argv[])
{
MySqlDbFactory* mySQlFactory = new MySqlDbFactory();
Factory factory = new Factory(mySQlFactory); ...
У меня есть ошибкаC++: Передача параметров класса указателя в конструкторе
преобразование
Factory*' to non-scalar type
завода»просил на
Factory factory = new Factory(mySQlFactory); line.
Есть ли у вас какие-либо предложения?
Код компилируется спасибо, но когда я вызываю метод Start фабричных как factory.Start(); он говорит, что «Старт» не был объявлен. У вас есть предложение об этом? – cagin
Я бы посоветовал вам взять некоторые базовые уроки C++. Ответ: factory-> Start(); это необходимо, потому что фабрика является указателем на объект Factory. – cageman
В этом контексте достаточно написать 'MySqlDbFactory mySqlFactory,' no 'new'. (Тогда вы также можете избавиться от разыменования '->') – erenon