Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回一个";“模板类对象”;在函数中_C++_Function_Templates - Fatal编程技术网

C++ 返回一个";“模板类对象”;在函数中

C++ 返回一个";“模板类对象”;在函数中,c++,function,templates,C++,Function,Templates,我有一个这样的模板类 //Matrix.h template <class T = double> class Matrix { //some constructors variables and ... }; //Matrix.h 模板 类矩阵 { //一些构造函数变量和。。。 }; 在名为Matrix.h的文件中定义,现在如何从其他文件(如assembly.h中的此类返回对象,类似于: //assemble.h #include "Matrix.h" Matrix&l

我有一个这样的模板类

//Matrix.h
template <class T = double>
class Matrix
{
    //some constructors variables and ...
};
//Matrix.h
模板
类矩阵
{
//一些构造函数变量和。。。
};
在名为Matrix.h的文件中定义,现在如何从其他文件(如assembly.h中的此类返回对象,类似于:

//assemble.h
#include "Matrix.h"
Matrix<T> assemble(Matrix<T> KG,int node)
{
    //some other codes
}
//汇编.h
#包括“矩阵h”
矩阵组装(矩阵KG,内部节点)
{
//其他一些代码
}

组装
也需要是一个模板函数:

template<typename T>
Matrix<T> assemble(Matrix<T> KG,int node)
{
    Matrix<T> m;
    //some other codes
    return m;
}
模板
矩阵组装(矩阵KG,内部节点)
{
矩阵m;
//其他一些代码
返回m;
}
注意:

  • 您应该在一个名称空间中声明它,而不是在全局名称空间中声明它
  • 考虑传递
    KG
    作为常量的参考,而不是按值传递

组装
也需要是一个模板函数:

template<typename T>
Matrix<T> assemble(Matrix<T> KG,int node)
{
    Matrix<T> m;
    //some other codes
    return m;
}
模板
矩阵组装(矩阵KG,内部节点)
{
矩阵m;
//其他一些代码
返回m;
}
注意:

  • 您应该在一个名称空间中声明它,而不是在全局名称空间中声明它
  • 考虑传递
    KG
    作为常量的参考,而不是按值传递

组装
也需要是一个模板函数:

template<typename T>
Matrix<T> assemble(Matrix<T> KG,int node)
{
    Matrix<T> m;
    //some other codes
    return m;
}
模板
矩阵组装(矩阵KG,内部节点)
{
矩阵m;
//其他一些代码
返回m;
}
注意:

  • 您应该在一个名称空间中声明它,而不是在全局名称空间中声明它
  • 考虑传递
    KG
    作为常量的参考,而不是按值传递

组装
也需要是一个模板函数:

template<typename T>
Matrix<T> assemble(Matrix<T> KG,int node)
{
    Matrix<T> m;
    //some other codes
    return m;
}
模板
矩阵组装(矩阵KG,内部节点)
{
矩阵m;
//其他一些代码
返回m;
}
注意:

  • 您应该在一个名称空间中声明它,而不是在全局名称空间中声明它
  • 考虑传递
    KG
    作为常量的参考,而不是按值传递
在一个名为Matrix.h的文件中定义了[Matrix template],现在我该怎么做 在其他文件(比如Assembly.h)中从该类返回一个对象

Matrix
本身不是一个类。这是一个模板;将其视为创建类的一种方法,例如
矩阵
矩阵
矩阵
矩阵

因此,问题是:您希望您的
assemble
函数与任何矩阵类一起工作,还是希望它与一个特定的矩阵类一起工作

在前一种情况下,您还必须将函数模板化(这意味着,与上面发生的情况类似,您不再拥有函数,而是拥有函数创建机制):


顺便说一下,您可能希望通过常量引用传递矩阵对象,尤其是在缺少C++11移动功能的情况下

在一个名为Matrix.h的文件中定义了[Matrix template],现在我该怎么做 在其他文件(比如Assembly.h)中从该类返回一个对象

Matrix
本身不是一个类。这是一个模板;将其视为创建类的一种方法,例如
矩阵
矩阵
矩阵
矩阵

因此,问题是:您希望您的
assemble
函数与任何矩阵类一起工作,还是希望它与一个特定的矩阵类一起工作

在前一种情况下,您还必须将函数模板化(这意味着,与上面发生的情况类似,您不再拥有函数,而是拥有函数创建机制):


顺便说一下,您可能希望通过常量引用传递矩阵对象,尤其是在缺少C++11移动功能的情况下

在一个名为Matrix.h的文件中定义了[Matrix template],现在我该怎么做 在其他文件(比如Assembly.h)中从该类返回一个对象

Matrix
本身不是一个类。这是一个模板;将其视为创建类的一种方法,例如
矩阵
矩阵
矩阵
矩阵

因此,问题是:您希望您的
assemble
函数与任何矩阵类一起工作,还是希望它与一个特定的矩阵类一起工作

在前一种情况下,您还必须将函数模板化(这意味着,与上面发生的情况类似,您不再拥有函数,而是拥有函数创建机制):


顺便说一下,您可能希望通过常量引用传递矩阵对象,尤其是在缺少C++11移动功能的情况下

在一个名为Matrix.h的文件中定义了[Matrix template],现在我该怎么做 在其他文件(比如Assembly.h)中从该类返回一个对象

Matrix
本身不是一个类。这是一个模板;将其视为创建类的一种方法,例如
矩阵
矩阵
矩阵
矩阵

因此,问题是:您希望您的
assemble
函数与任何矩阵类一起工作,还是希望它与一个特定的矩阵类一起工作

在前一种情况下,您还必须将函数模板化(这意味着,与上面发生的情况类似,您不再拥有函数,而是拥有函数创建机制):


顺便说一下,您可能希望通过常量引用传递矩阵对象,尤其是在缺少C++11移动功能的情况下