я борюсь с перегрузкой оператора, так как я хочу, чтобы сцеплениеоператор сдвига перегрузки <<, чтобы сцепление
class A{
int a;
public:
void doSomething(char *str);
A operator<<(char *str);
}
Так что у меня этот класс, и что я могу сделать, это взять строку и сделать что-то, что не важно для этого вопроса.
Что я мог теперь сделать, это
A *counter = new A();
counter->doSomething("hello");
Если я реализую перегруженный оператор сдвига
A A::operator<<(char *str)
{
this->doSomething(str);
return this;
}
Я могу написать это
A *counter = new A();
(*counter) << "hello";
Я надеюсь, что Бесполезный Не делайте ошибку здесь, потому что теперь мне интересно, как я могу позволить цепочки
(*counter) << "hello" << "test";
Я знаю, что с сцепление было бы сделать это
(*counter).operator<<("hello" << "test");
, который явно не имеет никакого смысла, так как есть две строки/символьные массивы Но я знаю, что есть способ сделать это. Я искал его, но каждый вопрос касался только объединения друг с другом экземпляров того же типа.
То, что я тогда пытался, заключалось в том, чтобы вставить два аргумента в функцию и добавить ее в качестве друга ... Я не уверен, но, возможно, мне нужно сделать новый перегруженный оператор с типом char*
или объект потока и сделать его другом A
?
Спасибо, что помогли мне, я думаю, должен быть легкий ответ, который я не вижу прямо сейчас.
Ваш оператор будет лучше принимать 'const char *'. –