2010-04-05 125 views
0

你能告诉我我的类构造函数有什么问题吗? 代码:构造函数返回值

CVector::CVector (int size_) 
{ 
if (size_ > 0) 
{ 
    this->size = size_; 
    this->data = new double[size]; 
    for (int i = 0; i < size; i++) 
    { 
    (*this)(i) = i; 
    } 
} 
cout << "constructor end" << endl; 
return; 
} 

用例:

tvector = CVector(6);

“构造函数结束”输出后出现访问冲突。

更新: 构造函数调用不正确。使用

CVector tvector(6); 工作。

+3

任何不使用'std :: vector'的理由? – GManNickG 2010-04-05 19:03:27

+1

请发布'CVector'的完整声明,它有助于解决成员'size','data'和任何其他神秘方法和未在片段中解释的成员。 – 2010-04-05 19:05:29

+0

请阅读_initialization lists_,这是你应该用来初始化你的数据成员。 – sbi 2010-04-05 19:07:56

回答

6

我认为你想要:this->data[i] = i;

0

我认为通过

(*this)(i) = i; 

你实际上意味着

this->data[i] = i; 

,对吗?

+0

是的,basicallt是一样的。我已经实现了operator()来访问数据[]。 – 2010-04-05 19:06:28

+0

@Ivan:您发布的代码中没有运算符()。也许你没有发布你的整个班级? – Bill 2010-04-05 19:12:05

1

您不需要在构造函数正文结尾处有return语句。

构造函数确实返回一个值,但这是另一次更详细的解释。

2

我打算假设你没有添加拷贝构造函数,而析构函数释放了你碰巧用一些其他代码跺脚的内存。

+0

+1。初学者最常犯的错误之一。 – 2010-04-05 19:20:57