我有:

String8& operator<<(const String8& string2);


为了这:

String8 s;
s << "533";


但我想这样做:

String8* s;
s << "433";


不必执行* s << "433";String8&String8* operator<<(const String8& string2);似乎不起作用。我也尝试使其成为全局运算符重载...

有任何想法吗?

以下是完整的代码,其中运算符为global:

class String8
{
    public:
        String8(char array[]) { }
};

String8* operator<<(String8* string1, const String8& string2);

main()
{
    String8* s;
    s << "433"
}


编译器错误:C2296:'<

最佳答案

您需要使其成为非成员函数,并以String8*作为第一个参数:

String8* operator<<(String8* target, const String8& string2);


顺便说一句,这似乎是一个相当可疑的事情,只是为自己节省一个星号。

07-24 22:09