using namespace std;
using namespace Eigen;
template<int x>
class MyClass{
typedef Matrix<float,x,x> MyMatrix;
MyClass();
MyMatrix getMatrix();
};
template<int x>
MyClass<x>::MyClass(){
int y = x+1;
MyMatrix m;
MyClass::MyMatrix mx;
}
template<int x>
MyClass<int x>::MyMatrix getMatrix(){
MyMatrix m;
return m;
}
我有以下代码。不幸的是,最后的decalration无法编译(getMatrix),我得到一个错误,说我在MyCLass :: MyMatrix之前需要一个typename,因为MyClass是一个依赖范围
将其更改为:
template<int x>
typename MyClass<x>::MyMatrix MyClass<x>::getMatrix(){
MyClass<x>::MyMatrix mx;
return mx;
}
它仍然没有编译并给出相同的错误。也公开了
答案 0 :(得分:0)
您的代码中存在许多错误。让我们一个一个地解决它们:
template<int x>
MyClass<x>::MyClass(){
int y = x + 1;
MyMatrix m;
MyClass::MyMatrix mx;
}
这里很难理解你在这里想要做什么。为什么有y
?为什么你试图以不同的方式使用同一个类?这是修复后的样子:
template<int x>
MyClass<x>::MyClass(){
MyMatrix m;
MyMatrix mx;
}
两个MyMatrix
都指同一个,即您在MyClass
中声明的那个。
现在,这段代码:
template<int x>
MyClass<int x>::MyMatrix getMatrix(){
MyMatrix m;
return m;
}
这里的语法错误。解决方法如何解决这个问题只需要查看上面的代码,并告诉编译器告诉你做什么:
template<int x>
// v----- Here!
typename MyClass<x>::MyMatrix getMatrix(){
// ^--- Dependent name here. Matrix is a type that depends
// on the parameter `x`. You must put typename to
// tell the compiler that it's a type
MyMatrix m;
return m;
}
为什么要在使用变量时指定变量的类型?
我没有看到其他问题。