C++ 聚合、模板和动态向量
我一直有3个错误。它们都与我聚合模板的方式有关,但我找不到任何帮助我解决这个问题的方法。我的老师不太清楚我们应该如何得到他希望我们得到的输出C++ 聚合、模板和动态向量,c++,templates,vector,aggregate-functions,C++,Templates,Vector,Aggregate Functions,我一直有3个错误。它们都与我聚合模板的方式有关,但我找不到任何帮助我解决这个问题的方法。我的老师不太清楚我们应该如何得到他希望我们得到的输出 In file included from main.cpp:10: ./Table.h:15:9: error: use of class template 'RowAray' requires template arguments 这是我写的 RowAray.cpp \ifndef ROWARAY\u H//如果未定义常量ROWARAY\u H,则不
In file included from main.cpp:10:
./Table.h:15:9: error: use of class template 'RowAray' requires template arguments
这是我写的
RowAray.cpp
\ifndef ROWARAY\u H//如果未定义常量ROWARAY\u H,则不执行
#定义ROWARAY\u H//定义常量ROWARAY\u H
#包括
#包含//坏的\u alloc异常所需
#包含退出功能所需的//项
模板
罗瓦莱班{
私人:
整数大小;
T*行数据;
void memError();//处理内存分配错误
void subError();//处理的下标超出范围
公众:
RowAray(T);//用于构造行数组对象
~RowAray(){delete[]rowData;}//用于从行数组中取消分配动态分配的内存
int getSize(){return size;}//用于返回行数组长度的内联访问器成员函数
T getData(inti){return((i>=0&&i1?colSize:1;
//为阵列分配内存。
尝试
{
rowData=新的T[尺寸];
}
捕获(错误分配)
{
memError();
}
//初始化数组。
对于(int count=0;countgetSize();}//用于返回列大小
T getRec(int,int)//用于返回插入的二维数组的随机数
};
模板
表::表(intr,intc){
//设置行大小
这->szRow=r;
//声明记录数组
记录=新建行*[this->szRow];
//每行大小
int-allCol=c;
//创建记录数组
for(int i=0;iszRow;i++){
记录[i]=新罗瓦雷(allCol);
}
}
模板
T表::getRec(int行,int列){
//用于返回随机生成的数组数的if-else语句
如果(行>=0&&rowszRow&&col>=0&&colgetSize()){
返回记录[行]->获取数据(列);
}否则{
返回0;
}
}
模板
表::~Table(){
//删除每条记录
for(int i=0;iszRow;i++){
删除记录[i];
}
删除[]条记录;
}
#endif/*表H*/
main.cpp
#包括
#包括
#包括
#包括
使用名称空间std;
//用户库
#包括“RowAray.h”
#包括“表h”
//全局常数
//功能原型
模板
无效路径(T*,int);
模板
无效prntTab(常数表&);
//行刑从这里开始!
int main(int argc,字符**argv){
//初始化随机种子
静态施法(时间(0));
//声明变量
int行=3,cols=4;
//用整数和浮点数测试行
罗瓦雷a(3);
罗瓦雷b(4);
cout“RowAray”是一个模板,有一个模板参数:
template <class T>
class RowAray
这里;但这只是基于对这堆代码的粗略观察,所以不要自动相信我的话。您需要弄清楚您打算在这里做什么,并指定正确的模板参数
这不是所示代码中唯一的无参数引用。您需要找到并修复所有这些引用
此外,你还甩了:
using namespace std;
在继续和#包含
之前,如果不是完全错误的代码,则通常会产生微妙的、难以理解的编译错误。您还必须使用命名空间std;
摆脱,尤其是当涉及到一堆#包含
时。谢谢你,这个作业是针对一个不属于我的编码范围的类的。它应该是一个复习作业,但我所选的先决条件类根本没有让我接触到面向对象编程,更不用说使用名称空间std的模板是坏的mkey?
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iomanip>
using namespace std;
//User Libraries
#include "RowAray.h"
#include "Table.h"
//Global Constants
//Function Prototype
template<class T>
void prntRow(T *,int);
template<class T>
void prntTab(const Table<T> &);
//Execution Begins Here!
int main(int argc, char** argv) {
//Initialize the random seed
srand(static_cast<unsigned int>(time(0)));
//Declare Variables
int rows=3,cols=4;
//Test out the Row with integers and floats
RowAray<int> a(3);
RowAray<float> b(4);
cout<<"Test the Integer Row "<<endl;
prntRow(&a,3);
cout<<"Test the Float Row "<<endl;
prntRow(&b,4);
//Test out the Table with a float
Table<float> tab1(rows,cols);
Table<float> tab2(tab1);
//Table<float> tab3=tab1+tab2;
cout<<"Float Table 3 size is [row,col] = Table 1 + Table 2 ["
<<rows<<","<<cols<<"]";
//prntTab(tab3);
//Exit Stage Right
return 0;
}
template<class T>
void prntRow(T *a,int perLine){
cout<<fixed<<setprecision(1)<<showpoint<<endl;
for(int i=0;i<a->getSize();i++){
cout<<a->getData(i)<<" ";
if(i%perLine==(perLine-1))cout<<endl;
}
cout<<endl;
}
template<class T>
void prntTab(const Table<T> &a){
cout<<fixed<<setprecision(1)<<showpoint<<endl;
for(int row=0;row<a.getSzRow();row++){
for(int col=0;col<a.getSize();col++){
cout<<setw(8)<<a.getRec(row,col);
}
cout<<endl;
}
cout<<endl;
}
template <class T>
class RowAray
template <class T>
class Table{
private:
int szRow;
RowAray **records;
RowAray<T> **records;
using namespace std;