這裏是我的代碼:不應該char *隱式轉換爲std :: string?
#include <iostream>
using namespace std;
struct ST {};
bool operator==(const struct ST *s1, const string &s2) {
return true;
}
int main() {
struct ST *st = new ST();
const char *p = "abc";
if (st == p) {
return 0;
}
return 1;
}
我得到編譯錯誤:
prog.cpp:14:12: error: comparison between distinct pointer types ‘ST*’ and ‘const char*’ lacks a cast [-fpermissive]
if (st == p) {
^
我不知道爲什麼,從字符*串隱式轉換不會在這裏工作?
UPDATE 安東的回答是有道理的,我更新的代碼:
#include <string>
using namespace std;
struct ST {};
bool operator==(const struct ST s1, const string &s2) {
return true;
}
int main() {
struct ST st;
const char *p = "abc";
if (st == p) {
return 0;
}
return 1;
}
現在它編譯。
比較不同類型的指針。你的重載操作符不會被調用。 – 101010 2014-09-03 15:41:48
與你的問題無關,但'#include'在這裏不是必需的。 '#include '是。 –
2014-09-03 15:54:47