私は古いC++ DLLを発見しました。私はVS2015の私のプロジェクトの1つにしたいと思います。voidポインタ関数の出力
問題はコンパイルできないということです。私は最初にコードを作ったチームの人と連絡を取り合いました。彼はVS2010でコンパイルされた全く同じコードであるということは肯定的です。ヘッダの
エキス:
/*
Data input
*/
istream* input; //Source of data
long inputpos; // Current position in the data stream
とコード自体:
は、私がそうでなければ非常に簡単な関数でエラーが発生している
// Helper function to increment a counter while reading a character
void* Calculator::inputstream_get(char& ch)
{
++inputpos;
return input->get(ch);
}
最後に、私はエラーを取得しますC2440:
'return': cannot convert from 'std::basic_istream<char,std::char_traits<char>>' to 'void *'
私は間違っていると私は理解しています(私は言うべきC++の専門家ではありません...)voidポインタはどんなタイプのデータでも表すことができますか?
私のistreamをvoidポインタに 'キャスト'する方法はありますか?
ご協力ありがとうございます。
'void *'は、あらゆるタイプの完全停止ではなく、あらゆるタイプのポインタを表すことができます。 'std :: basic_istream>'はポインタ型ではないので、 'void *'に変換することはできません。 'std :: basic_istream > *'でもかまいません。 –
Kevin
_私は最初にコードを作ったチームの人と連絡を取り合いました。彼はVS2010でコンパイルされたコードと全く同じであることを確信しています._あなたの人の声明は正しいです - ** VS2010で**コンパイルします。 –
あなたのコメントから、これは「正しい」コードではない(VS2015に関する限り)。 なぜそれがVS2010でコンパイルされましたか?標準は変更されていますか? 助けてくれてありがとう – Maxime