2014-01-26 88 views
-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); ... 

我从Factory*' to non-scalar type工厂”的错误C++:传递指针类参数的构造函数

转换要求 上

Factory factory = new Factory(mySQlFactory); line. 

你有什么建议吗?

回答

1

它是:

Factory* factory = new Factory(mySQlFactory); 

(注意*Factory

+0

编译代码谢谢你,但是当我打电话厂的启动方法factory.Start();它说“开始”尚未宣布。你有关于这个的建议吗? – cagin

+1

我会建议你采取一些基本的C++教程。答案是:factory-> Start();这是需要的,因为factory是一个指向Factory对象的指针。 – cageman

+0

在这种情况下,编写MySqlDbFactory mySqlFactory就足够了,不需要new。 (那么你也可以省略dereference' - >') – erenon