Foo
から派生したパラメーターを使用して型オブジェクトが返されるこのジェネリックメソッドがある場合string s
:
Foo createFoo(string s)
{
int index, first, second, third, fourth, fifth;
Foo fooName(int first, int second,int third,int fourth,int fifth);
return fooName;
}
そして、主に、私は次のようなことをしようとしています:
Foo newFoo = createFoo(argv[2]);
コンパイラでこのエラーが表示されるのはなぜですか?
file.cc:30:1: エラー: 'Foo' はタイプ file.cc の名前ではありません: 関数内 'int main(int, char**)': file.cc:180:38: エラー: 'createFoo' ではありませんでした このスコープで宣言された
Javaから来て、このようなことをしても通常は問題はありませんが、なぜこれがC++で問題になるのでしょうか? どうすればこれを修正できますか?
編集 1: 私のFoo
クラス定義がどこにあるかを尋ねるいくつかの提案。メソッドの後に配置されていたので、コードのクラス定義セグメントの後にメソッドcreateFoo
を移動してコンパイルを試みました。今、新しいエラーが発生します:createFoo
Foo
file.cc: 関数内 'Foo createFoo(std::string)': file.cc:153:9: エラー: 'Foo (*)(int, int, int, int, int)' から変換中 非スカラー型 'Foo' が要求されました