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
本身不是一个类。这是一个模板;将其视为创建类的一种方法,例如矩阵
,矩阵
,矩阵
或矩阵
因此,问题是:您希望您的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移动功能的情况下