Đây là mã của tôi:Không nên char * ngầm chuyển thành 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;
}
tôi nhận biên dịch báo lỗi:
prog.cpp:14:12: error: comparison between distinct pointer types ‘ST*’ and ‘const char*’ lacks a cast [-fpermissive]
if (st == p) {
^
Tôi tự hỏi tại sao chuyển đổi ngầm từ char * để chuỗi không làm việc ở đây?
CẬP NHẬT câu trả lời Anton của ý nghĩa, tôi cập nhật mã:
#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;
}
Bây giờ nó biên dịch.
Bạn so sánh các loại con trỏ khác nhau tại đây. Toán tử quá tải của bạn không được gợi lên. – 101010
Không liên quan đến vấn đề của bạn, nhưng '#include' không bắt buộc ở đây. '#include ' is. –