如何使用“A”类的方法返回“B”类型?例如:
template <typename T> class A{
//something
template <typename V> class B{
//something
};
B& foo(){
B<T> y; //the variable must have the same type T of the father class (for my exercise)
//something
return y;
}
};
主:
A <int> o;
o.foo();
一旦我尝试编译它,它就会给我这些错误:
“在B&amp; foo()...”无效使用模板名'A&lt; T&gt; :: B',没有参数列表“
和
“'A级'没有名为'foo'的成员”
关闭B级后我写了函数“foo”,所以它可能是正确的......
答案 0 :(得分:2)
您的代码有三个问题:
public
访问说明符。 foo()
无法在class A
之外访问{/ 1}}。B<T> foo()
。更好的是,让编译器推导出返回类型(适用于C ++ 14及更高版本),所以只需编写auto foo()
考虑到这一点,您的代码应该有效。