转换需要 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
的优先级低于 ->
。
为什么编译器在这里抱怨转换
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
的优先级低于 ->
。