0
ostreamを扱うスイッチでは、オブジェクトの正確なテンプレートタイプを指定する関数はほとんどありません。 しかし、何とか入れ子関数を使用しているときに、余分なアドレスが出力ストリームに表示されます。ネストされた関数を使用すると、Ostream出力で余分なアドレスが発生する
コード例:
#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;
}
OUTPUT: "out0x600e08"
任意のアイデア理由があり、これを防止するために、どのように?
と同等です
あなたは 'のstd :: coutの<< TMP(CIN)したいです;'。 –
あなたのコードは私に[コンパイルエラー](http://melpon.org/wandbox/permlink/19CciuvkFMECj4yc)を与えました。あなたのコンパイラは何ですか? – MikeCAT
@πάνταῥεῖいいえ、関数 'tmp()'には1つの引数が必要です。 – MikeCAT