gpt4 book ai didi

c++ - 创建对象数组 - 从类模板继承并在 C++ 中使用构造函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:52:01 24 4
gpt4 key购买 nike

所以这是我的模板类声明:

template <class elemType>
class listType

我有一个这样的构造器:

listType(const elemType &, const elemType &, const elemType &, 
const elemType &, const elemType &){

list[0] = a;
list[1] = b;
list[2] = c;
list[3] = d;
list[4] = e;

}

像这样使用 protected 成员变量:

elemType *list;

这是为了在我的代码中传入stockType类型的对象。我从这个名为 stockListType 的模板类 listType 继承了一个类,并尝试创建一个构造函数,它将参数传递给 listType 中已经创建的构造函数:

stockListType :: stockListType(const stockType &a, const 
stockType &b, const stockType &c, const stockType &d, const
stockType &e) : listType(a, b, c, d, e) {

}

我不确定我是否理解如何将类模板和构造函数与我从中继承的类模板一起使用。

我尝试制作 5 个 stockType 类型的对象(使用文件输入它们的成员变量的信息),然后尝试在我的主代码中将继承类的构造函数与这些对象一起使用:

stockListType object(obj1, obj2, obj3, obj4, obj5); 

但是当它尝试运行时,我总是遇到错误。

编辑:我得到的错误是 Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)

子类头是:

#ifndef stockListTypeHeader_h
#define stockListTypeHeader_h

#include "listType Header.h"

class stockListType : public listType <class stockType>
{
public:
stockListType(const stockType &, const stockType &, const stockType &, const
stockType &, const stockType &);

void sortList();
void swap(stockType&, stockType&);

const void printList();

protected:
stockType *sortIndicesGainLoss;




};


#endif /* stockListTypeHeader_h */

而子类的.cpp文件是:

#include <stdio.h>
#include "stockListTypeHeader.h"
#include "stockType.h"
#include <iostream>


void stockListType:: sortList(){
sortIndicesGainLoss = list;

for(int i =0; i<5; i++){
for(int j =0; j<5-i-1; j++) {
if (sortIndicesGainLoss[j].getStockSymbol() >
sortIndicesGainLoss[j+1].getStockSymbol()){
swap(sortIndicesGainLoss[j], sortIndicesGainLoss[j+1] );
}
}
}
}

void stockListType:: swap(stockType &xp, stockType &yp){
stockType temp = xp;
xp = yp;
yp = temp;

}

void const stockListType:: printList() {
for(int i=0; i<5; i++)
cout << sortIndicesGainLoss[i];

}

stockListType :: stockListType(const stockType &a, const stockType &b, const
stockType &c, const stockType &d, const stockType &e) : listType(a, b, c, d, e)
{

}

编辑 3:

谢谢大家的帮助,我发现这是因为我没有初始化列表或我的 sortIndicesGainLoss。

现在我在 sortList 方法下遇到错误。有人知道为什么吗?

最佳答案

elemType *list; 初始化。我真的认为这就是问题所在。尝试在构造函数中将其初始化为类似

list = new elemType [5]; 因为您将使用 5 个元素。

listType(const elemType &, const elemType &, const elemType &, 
const elemType &, const elemType &){

this->list = new elemType [5];

list[0] = a;
list[1] = b;
list[2] = c;
list[3] = d;
list[4] = e;

}

关于c++ - 创建对象数组 - 从类模板继承并在 C++ 中使用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53315269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com