如果我有这个泛型方法,其中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”