Здесь есть несколько проблем.
Прежде всего, есть разница, когда вы звоните f == g
, если тип string
или string*
. Если тип string*
, вы на самом деле не сравниваете строки, а вместо этого сравниваете сами указатели (что редко имеет смысл). Если тип string*
, вам нужно будет использовать *f == *g
для их сравнения (*
разыменовывает указатели и выдает фактический объект, на который указывает).
Кроме того, указатели здесь не требуются, и код my_string* f = "hello"
не должен компилироваться.
Если вы хотите указатель на вашу строку, вам нужно будет использовать
my_string str = "hello";
my_string* ptr = &str;
Но опять же, я не понимаю, почему вы используете указатели здесь.