Я не думаю, что это существует, потому что когда вы пишете:
int nb = a.funcFoo() + a.funcBar();
Если a.funcFoo () возвращает целое число со значением 3, а a.funcBar () возвращает целое число, котороеимеет значение 5, тогда код в этих двух функциях выполняется заранее, и они затем «заменяются» в выражении их возвращаемым значением, что дает нам:
int nb = 3 + 5;
Так что это означает, что в вашемВ этом случае a.func () заменяется возвращаемым значением:
(your returned value) << "test";
Если вы хотите, чтобы оператор потока действовал на возвращаемое значение, то, возможно, вы могли бы перегрузить оператор потока, перегрузка оператора позволяет вамопределить, что делает оператор, в зависимости от того, что до и после него.Для получения дополнительной информации: https://en.cppreference.com/w/cpp/language/operators
Глядя на добавленный вами комментарий, я все еще не совсем понимаю, что вы хотите сделать, но я думаю, что это возможно, просто используя перегрузку параметров и функций.Перегрузка функций позволяет создавать несколько функций, которые принимают разные параметры, но имеют одно и то же имя.
Например (используя имя вашего класса):
void ClassA::test(std::string const &str)
{
std::cout << "We received a string!" << std::endl;
}
void ClassA::test()
{
std::cout << "We received nothing..." << std::endl;
}
В зависимости от того, проверен ли тест ()Функция получила строку или не получила ни одного параметра, один из этих двух методов.
Если вы хотите, вы можете сделать, например:
void ClassA::func(std::string const &debugMessage)
{
std::cerr << "DEBUG: " << debugMessage << std::endl;
func();
}
void ClassA::func()
{
//Do stuff
}
Здесь, если вы вызываете func() со строкой в качестве параметра, она покажет отладочное сообщение, затем она вызовет функцию func (), которая не принимает никаких параметров, но вы также можете вызвать функцию func () без каких-либо параметров, и сообщение об отладке не будетпоявляются!Для получения дополнительной информации: https://www.geeksforgeeks.org/function-overloading-c/