visual-studio-2010 - TVMet(矩阵库)与 VS2010

标签 visual-studio-2010 compilation

我正在尝试让 tvmet 与 VS2010 一起工作。我已经下载了 TvMet 源代码( http://tvmet.sourceforge.net/ ),并将 include 目录包含在我的项目设置中。然后我写

#include <tvmet/Matrix.h>

using namespace tvmet;

但是我收到编译错误,说 config.h 丢失。没关系。因此,我从配置文件夹 config-vc71.h 复制到 tvmet 目录,就像 config.h 一样,但随后出现错误

"Error  25  error C2244: 'tvmet::CommaInitializer<Obj,LEN>::operator ,' : unable to match function definition to an existing declaration"

此错误意味着什么以及如何解决它?

最佳答案

在CommaInitializer.h中,内联实现

Initializer<value_type, 2> operator,(value_type rhs);

来自

template<class Obj, std::size_t LEN>
typename CommaInitializer<Obj, LEN>::template Initializer<typename Obj::value_type, 2>
CommaInitializer<Obj, LEN>::operator,(typename Obj::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)
{
 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);
}

VS 不喜欢函数定义中的::template 关键字。如果删除::template 关键字,您将破坏 gcc :( 但如果您内联实现,它应该可以正常工作。

希望对你有帮助

关于visual-studio-2010 - TVMet(矩阵库)与 VS2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16718139/

相关文章:

vb.net - 2010 年的 Visual Basic PowerPack 在 2013 年不起作用?

c++ - 在 Visual Studio 2010 中, Debug模式下没有堆栈展开

.net - Visual Studio 2010 远程调试 - 无法连接 : Access Denied

c++ - Microsoft Visual C++ 2010 Express - 编译错误

compilation - 标记和词位有什么区别?

c# - 如何在 C++/CLI 中创建 C# 事件处理程序?

javascript - Visual Studio Code 分析代码行对 HTML、CSS 和 Javascript 有什么作用?

c++ - 将整个类定义放在 ".h"中是否会使可执行文件更大?

compilation - 在 Linux 上编译 VLC : Error couldnt find Lua

java - : binary,解释、执行、编译这几个概念之间有什么关系?