gpt4 book ai didi

c++ - 简单的用户定义 vector 模板示例

转载 作者:太空狗 更新时间:2023-10-29 20:30:44 24 4
gpt4 key购买 nike

考虑以下代码:

template<typename T>
class vecTor
{
int size;
T *v;
public:
vecTor(int s=0): size(s),
v(new T[size]) // conv. ctor [1]
{
for(int i=0; i<size; i++)
v[i]=0;
}

vecTor(T *x,int s) // [2] this conv. ctor produces seg. fault if called
{
size=s;
for(int i=0; i<size; i++)
v[i] = x[i];
}

void vecTorset(T *a,int s) // this method works fine
{ // instead of [2]
size=s;
for(int i=0; i<size; i++)
v[i] = a[i];
}

~vecTor()
{
delete [] v;
}

void printvec() const;
};

template<typename T>
void vecTor<T>::printvec() const
{
cout<<"Vector is:\n";
for(int i=0; i<size; i++)
cout<< v[i] <<" ";
cout<<"\n";
}

int main()
{
int a[3]= {3,5,7};

vecTor<int> v1(3);

v1=vecTor<int>(a,3); // this call produces seg. fault

//v1.vecTorset(a,3); //this call works fine

v1.printvec();

return 0;

如果我调用第二个转换函数

      v1=vecTor<int>(a,3);

我在 codepad.org 遇到段错误;它在 mingw 上崩溃。可能是什么问题?

最佳答案

你没有初始化 T*

vecTor(T *x,int s) : size(s), v(new T[size]) 
{
for(int i=0; i<size; i++)
v[i] = x[i];
}

关于c++ - 简单的用户定义 vector 模板示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086547/

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