【发布时间】:2014-02-14 21:34:29
【问题描述】:
我是 C++ 新手,在使用指针传递和引用创建对象数组时遇到了很大的麻烦。这不是实际的代码;这是代码本质上的一个示例。
#include <iostream>
class MyClass
{
public:
MyClass();
static int doStuff(MyClass *&classArray);
void print_number();
private:
int number;
};
MyClass::MyClass()
{
}
int MyClass::doStuff(MyClass *&classArray)
{
int i = 0;
for (i = 0; i < 10; i++) {
*classArray[i].number = i;
}
return i;
}
void MyClass::print_number()
{
std::cout << number << "\n";
}
int main(void)
{
MyClass *test = nullptr;
int p = MyClass::doStuff(test);
std::cout << p << '\n';
for (int i = 0; i < 10; i++) {
test[i].print_number();
}
return 0;
}
编译时,这会产生分段错误。
【问题讨论】:
-
您永远不会分配内存来保存
MyClass的实例。你应该写(主要)MyClass test[10];而不是MyClass *test = NULL; -
@leemes 我的错误:在实际代码中它是
MyClass *class = nullptr。我会解决的。 -
这或多或少是一样的。两者都不分配任何内存。我说
MyClass test[10];
标签: c++ arrays parameter-passing