Visual studio 2010 带VS2010的TVMet(矩阵库)

Visual studio 2010 带VS2010的TVMet(矩阵库),visual-studio-2010,compilation,Visual Studio 2010,Compilation,我正试图让tvmet与VS2010合作。我已经下载了TvMet源代码(),在我的项目设置中包含了include目录。然后我写 #include <tvmet/Matrix.h> using namespace tvmet; 此错误的含义以及如何解决它?在commainInitializer.h中,内联 Initializer<value_type, 2> operator,(value_type rhs); 初始化器运算符(值类型rhs); 从 模板 typena

我正试图让tvmet与VS2010合作。我已经下载了TvMet源代码(),在我的项目设置中包含了include目录。然后我写

#include <tvmet/Matrix.h>

using namespace tvmet;

此错误的含义以及如何解决它?

在commainInitializer.h中,内联

Initializer<value_type, 2> operator,(value_type rhs);
初始化器运算符(值类型rhs);

模板
typename CommainInitializer::模板初始值设定项
CommainInitializer::operator,(类型名Obj::值\类型rhs)
{
m_wipeout_on_destruct=false;
迭代器iter1=m_object.data();
*iter1=m_数据;
迭代器iter2=iter1+1;
*iter2=rhs;
返回初始值设定项(iter2+1);
}

初始化器运算符(值类型rhs)
{
m_wipeout_on_destruct=false;
迭代器iter1=m_object.data();
*iter1=m_数据;
迭代器iter2=iter1+1;
*iter2=rhs;
返回初始值设定项(iter2+1);
}
VS不喜欢函数定义中的::template关键字。如果删除::template关键字,您将破坏gcc:,但是如果您内联实现,它应该可以正常工作


希望对您有所帮助

下面的一行尝试声明重载的逗号运算符函数

Initializer<value_type, 2> operator,(value_type rhs);
初始化器运算符(值类型rhs);
但是VC++无法将函数定义与其声明相匹配,因此我注释掉了上面的一行,而是添加了以下函数声明

typename CommaInitializer<Obj, LEN>::template Initializer<typename Obj::value_type, 2>
  CommaInitializer<Obj, LEN>::operator,(typename Obj::value_type rhs);
typename CommainInitializer::模板初始值设定项
CommainInitializer::operator,(typename Obj::value_type rhs);

VC71. VC++是Visual Studio 2003,我想你为什么要用这个?我想知道如何才能让它在VS2010中工作吗?我想如果没有最近的配置,我想这是个好地方。我想问题是微妙的C++语法变化,就像你必须处理和固定的。我会开始的任何提示?你认为我只需要T。o编辑配置头文件?不知道抱歉。我可能会把配置文件放在一边,假设它看起来很合理,然后解决编译器给你的所有错误-例如,声明一个。或者查找另一个已移植到VS2010的矩阵库,或者询问某个项目邮件列表。
Initializer<value_type, 2> operator,(value_type rhs)
{
 m_wipeout_on_destruct = false;
 iterator iter1 = m_object.data();
 *iter1         = m_data;
 iterator iter2 = iter1 + 1;
 *iter2         = rhs;
 return Initializer<value_type, 2>(iter2 + 1);
}
Initializer<value_type, 2> operator,(value_type rhs);
typename CommaInitializer<Obj, LEN>::template Initializer<typename Obj::value_type, 2>
  CommaInitializer<Obj, LEN>::operator,(typename Obj::value_type rhs);