У меня есть несколько функций с переключателями, использующими ostreams, чтобы указать точный тип шаблона для объекта для печати. НО как-то, когда я использую вложенные функции, дополнительный адрес появляется в потоке вывода.Ostream output дает дополнительный адрес при использовании вложенных функций
Пример кода:
#include <iostream>
using namespace std;
ostream & tmp2(ostream & in)
{
return in << "out";
}
ostream & tmp(ostream & in)
{
return in << tmp2(in);
}
int main(int argc, char** argv)
{
int t = 2;
switch (t)
{
case 2:
std::cout << tmp;
}
return 0;
}
ВЫВОД: "out0x600e08"
какие-либо идеи, почему это и как это предотвратить?
Вы хотите 'станд :: COUT << TMP (КИН);'. –
Ваш код дал мне [компилировать ошибку] (http://melpon.org/wandbox/permlink/19CciuvkFMECj4yc). Каков ваш компилятор? – MikeCAT
@ πάνταῥεῖ Нет, для функции 'tmp()' потребуется один аргумент. – MikeCAT