【发布时间】:2012-05-04 14:15:19
【问题描述】:
如果我有这个泛型方法,其中使用派生自 string s 的参数返回类型 Foo 对象:
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;
}
然后在 main 中,我尝试做这样的事情:
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 类定义代码段之后并尝试编译。
现在出现一个新错误:
【问题讨论】:
-
您是否将
Foo的定义添加到您的主源文件中? -
你在哪里定义了 Foo?如果是在 createFoo 方法之后,那么在之前。
-
Foo 的类定义位于同一个 .cc 文件中。事实上,目前所有内容都位于同一个文件中。
标签: c++ class methods initialization