0

我有:

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

为了这:

String8 s;
s << "533";

但我想这样做:

String8* s;
s << "433";

无需做* s << "433";or String8&String8* operator<<(const String8& string2);似乎不起作用。我也尝试将其设为全局运算符重载...

有任何想法吗?

以下是全局运算符的完整代码:

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

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

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

编译器错误:C2296:“<<”:非法,左操作数的类型为“Base::String8 *”

4

1 回答 1

2

您需要将其设为非成员函数并将 aString8*作为第一个参数:

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

顺便说一句,这似乎是一件相当有问题的事情,只是为了给自己留一个星号。

于 2013-01-18T05:46:01.067 回答