gpt4 book ai didi

c++ - 模板初始化构造函数错误

转载 作者:行者123 更新时间:2023-11-28 07:54:26 24 4
gpt4 key购买 nike

嘿,我不知道如何让我的模板标题工作。我必须让我的 init 构造函数接收一个数组并将其反转。因此,例如,如果我有 [1,2,3,4],它会在 [4,3,2,1] 中接受它

这是我的模板类:

#pragma once
#include <iostream>

using namespace std;

template<typename DATA_TYPE>
class Reverser
{
private:
// Not sure to make this DATA_TYPE* or just DATA_TYPE
DATA_TYPE Data;
public:
// Init constructor
Reverser(const DATA_TYPE& input, const int & size)
{
// This is where I'm getting my error saying it's a conversion error (int* = int), not sure
// What to make Data then in the private section.
Data = new DATA_TYPE[size];
for(int i=size-1; i>=0; i--)
Data[(size-1)-i] = input[i];
}

DATA_TYPE GetReverse(){
return Data;
}

~Reverser(){
delete[] Data;
}

};

是的,如果你能告诉我我做错了什么,那就太好了。

最佳答案

那是因为当您将数组传递给函数时,它会转换为指针。您必须使用 DATA_TYPE 作为指针:

template<typename DATA_TYPE>
class Reverser
{
private:
// Not sure to make this DATA_TYPE* or just DATA_TYPE
DATA_TYPE* Data; //pointer
public:
// Init constructor
Reverser(const DATA_TYPE* input, const int & size) //pointer
{
// This is where I'm getting my error saying it's a conversion error (int* = int), not sure
// What to make Data then in the private section.
Data = new DATA_TYPE[size];
for(int i=size-1; i>=0; i--)
Data[(size-1)-i] = input[i];
}

DATA_TYPE* GetReverse(){ //Returns Pointer
return Data;
}

~Reverser(){
delete[] Data;
}
};

关于c++ - 模板初始化构造函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13066124/

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