当前位置: 首页 > 知识库问答 >
问题:

为什么我在编译模板类时遇到困难?

左丘楷
2023-03-14
#include <iostream>
#include <string.h>

//template <class t> class Matrix; //possible way of fixing the friend function.

using namespace std;
  template<class T, size_t NROWS, size_t NCOLS>
  std::ostream & operator<<(std::ostream &os, const Matrix<T,NROWS, NCOLS> &matrix);


template<class T, size_t NROWS = 1, size_t NCOLS = 1>
class Matrix{
public:
  Matrix(){}
  friend std::ostream &operator<< <>(std::ostream&os,const Matrix<T, NROWS, NCOLS> &matrix);

private:
  T container[NROWS][NCOLS];
};


template<class T,size_t NROWS, size_t NCOLS>
  std::ostream &operator<<(std::ostream &os,const Matrix<T,NROWS,NCOLS>&matrix){
  for(size_t i=0;i<NROWS;++i){
    for(size_t j=0;j<NCOLS;++j){
      os  <<matrix.container[i][j]<<" ";
    }
    os <<std::endl;
  }
  os <<std::endl;
}


int main(){
  Matrix<float, 10, 5> mat;
  cout << mat;
  return 0;
}

共有1个答案

高吉星
2023-03-14

如果取消对第4行的注释,并将其更改如下,则所编译的代码为:

template <class t, size_t, size_t> class Matrix; //possible way of fixing the friend function.

您的问题似乎是前向声明的矩阵模板参数与后面的矩阵定义不匹配。

此外,尽管代码将在此修复后编译,但仍然存在一个您可能也想修复的警告:

In function 'std::ostream& operator<<(std::ostream&, const Matrix<T, NROWS, NCOLS>&)':
31:1: warning: no return statement in function returning non-void [-Wreturn-type]
 类似资料:
  • 我正在尝试使用android Studio从tess-two项目中构建两只眼睛。我为tess-two和eyes-two做了ndk-build android...ant发布的东西,导入了eyes-two,配置了NDK.dir路径等等,但是,在构建时,我得到了以下错误消息:

  • 编译过程中的错误有: 说明资源路径位置类型new AsyncHttpResponseHandler(){}类型的onSuccess(String)方法必须重写或实现超类型方法

  • 我正在做我的节目。我正在使用Sublime文本和用于编译基本Windows CMD。我有一个文件夹,在这个文件夹中我有一个包,里面有每个文件(folde todolist)。在这个包中,我有一个类(Gui.java(packgae(folder)Gui\u pckg))。此类中的代码如下所示: 导入javax。摆动导入java。awt。; 公共类Gui{ } 而且它编译得很好。 但是,当我试图编译

  • 有人能帮我解决这个编码蝙蝠的问题吗,我很接近,但我不明白我做错了什么。我试着用不同的方法重新编写我的代码,并研究了解决方案。如果有人能解释这个问题,那就太好了。我对编码和Java非常陌生,所以如果解决方案是显而易见的,我很抱歉。这就是问题所在。

  • 我已经介绍了SO的所有解决方案,以解决NetworkOnMainThreadException(包括异步类),但仍然存在一些问题 这是我的简单代码: 活动主类别: MyTask类: 但仍然: 注意: 如果我把: 它确实有效: 问题 我做错了什么? 完整堆栈跟踪:http://jsbin.com/bilafi/2/edit 我所做的就是加载json文件! onPostExecute的完整代码:

  • 问题内容: 我是学习Flask的Django开发人员。我对Flask中的工作方式还很陌生。访问时,我得到的404包含以下代码。有人可以解释为什么我得到这个: 在服务器上找不到请求的URL。如果你手动输入网址,请检查拼写,然后重试。 问题答案: 你在注册处理程序之前先打电话。你应该将整个块移到脚本的底部。