【发布时间】:2012-11-05 00:40:13
【问题描述】:
我目前正在使用 C++,我面临着这个挑战。这是头文件中我的类的代码:
class PID
{
private:
int PID;
int total;
public:
PID(); // Constructor
int returnPID(); // Returns PID.
};
这是cpp文件中的代码声明:
PID::PID()
{
PID=INT_MAX;
total=0;
}
int PID::returnPID()
{
return PID;
}
这里是包含指向类 PID 对象的指针的表的 main 中的声明和初始化:
PID* table[1000000];
for (int i=0; i<1000000; i++)
{
table[i]=new PID;
}
所以我想这使用我在上面创建的构造函数将 PID 设置为 MAX_INT。 当我尝试在初始化中使用 returnPID 访问 table[i].PID 的内容时,一切正常,如下所示:
for (int i=0; i<1000000; i++)
{
table[i]=new PID;
int display=table[i]->returnPID();
cout<<display<<endl;
}
当我尝试在外部和初始化之后访问 table[i] 内容时,会出现问题。我的主要崩溃并返回一个数字(-1073741571)作为错误。似乎连一个来自 main 的命令都没有执行。这是似乎重现问题的代码示例:
for (int i=0; i<1000000; i++)
{
table[i]=new PID;
}
for (int i=0; i<1000000; i++)
{
int display=table[i]->returnPID();
cout<<display<<endl;
}
我已经为此工作了两个多小时,但没有找到任何解决方案,这似乎不合逻辑。有人对此有什么解释吗?
编辑:任何点数少于 1.000.000 的表格都可以正常工作。也许这与此有关,尽管我仍然没有看到联系。
【问题讨论】:
-
“我的 main 无缘无故崩溃了” - 值得怀疑。我倾向于相信操作系统。
-
这对我来说是一个糟糕的陈述。必须有一个原因,实际上这就是我正在寻找的原因。有什么想法吗?
-
error: field ‘int PID::PID’ with same name as class...避免它.... -
@noleptr 约定使用类的名称作为类构造函数和析构函数。你是第一个告诉我这种事情的人。关于为什么我应该避免这种情况的任何提示?
-
@Aposperite....我说的是 PID
private变量....顺便说一句,这是我的 gcc 编译器...我试图看看你的代码有什么问题....