为什么编译器会抱怨在这里投射
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:'返回' :无法转换为' DBconnection *'到' DataSet *' 指向的类型是无关的;转换需要reinterpret_cast,C风格的转换或函数式转换
如果我尝试使用例如c-casting,它也不起作用
return new (DataSet*)DBconnection()->query(q);
答案 0 :(得分:4)
您已经忘记了运营商优先级表:
return (new DBconnection())->query(q);
会奏效。 new
的优先级低于->
。