gpt4 book ai didi

c++ - 奇怪的指针错误 C++ MSVC6

转载 作者:搜寻专家 更新时间:2023-10-31 00:03:52 25 4
gpt4 key购买 nike

这个错误让我很生气。我已经大大简化了代码(这些是类中的虚函数,如果有帮助的话),但这就是它的要点。我传递了一个指针,但无论出于何种原因,调用函数都没有获得相同的值。

提前致谢。

bool getTable( int tableNum, DataTable* outputTable )  
{
// ... unrelated work ...
outputTable = new DataTable();
cout << "outputTable= " << outputTable << endl;
return true;
}

bool storeTable( int tableNum )
{
// ...
DataTable* theTable;
bool isWorking = getTable( tableNum, theTable );
cout << "theTable= " << theTable << endl;
// ...
return isWorking;
}

这个的输出是:

outputTable= 01ED8C20  
theTable= CCCCCCCC

如果我尝试使用 theTable,我会收到访问冲突异常。

再次感谢。

最佳答案

两件事:

  1. 您正在按值 传递指针。它被复制到函数中,但对指针的更改是本地。如果您想更改指针,您需要通过引用传递它:

    bool getTable(int tableNum, DataTable*& outputTable)

    更好的是,返回新创建的对象并摆脱(看似无用?)bool 返回值。

  2. 摆脱 VS6。它很古老,漏洞百出,基本上无法应对现代 C++。事实上,它会迫使您编写糟糕的 C++ 代码,因为良好的、惯用的 C++ 代码需要的功能在 VC++6 中不起作用。此外,IDE 仅落后于现代可用性标准十年。

关于c++ - 奇怪的指针错误 C++ MSVC6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217620/

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