转换需要 reinterpret_cast、C 风格转换或函数风格转换

Conversion requires reinterpret_cast, C-style cast or function-style cast

为什么编译器在这里抱怨转换

 class DBconnection {
  public:
     DataSet* query(string qStr) {
     ConnImpl* conImpl = ConnectionPool::getInstance()->acquireConnection();
     DataSet *data = new DataSet();
     conImpl->doQuery(qStr,data);
     ConnectionPool::getInstance()->releaseConnection(conImpl);
     return data;
 }
};


 class Client {
  public:
     DataSet* queryDB(string q) {
     return new DBconnection()->query(q);
  }
 };

Client::queryDB(std::string)实际上是通过DBconnection::query(std::string).

返回一个DataSet指针

错误:

错误 C2440:'return':无法从 'DBconnection *' 转换为 'DataSet *' 指向的类型是不相关的;转换需要 reinterpret_cast、C 风格转换或函数风格转换

例如,如果我尝试 - c-casting,它也不起作用

 return new (DataSet*)DBconnection()->query(q);

您忘记了运算符优先级 table:

return (new DBconnection())->query(q);

会起作用。 new 的优先级低于 ->