gpt4 book ai didi

c++ - 无法从 C++ 中的类获取值?

转载 作者:行者123 更新时间:2023-11-28 03:07:48 28 4
gpt4 key购买 nike

我刚从 Java 和 Python 世界来到 C++ 世界,在尝试从类的公共(public) const 函数中获取值时遇到了问题。

我有一个类如下:

class CMDPoint
{
public:
CMDPoint();
CMDPoint(int nDimensions);
virtual ~CMDPoint();
private:
int m_nDimensions; // the number of dimensions of a point
float* m_coordinate; // the coordinate of a point
public:
const int GetNDimensions() const { return m_nDimensions; }
const float GetCoordinate(int nth) const { return m_coordinate[nth]; }
void SetCoordinate(int nth, float value) { m_coordinate[nth] = value; }
};

最终,我希望将clusterPointArray中的所有clusterPoint写入文件。但是,现在我只是用第一个 clusterPoint(因此,GetCoordinate(0))对其进行测试。

ofstream outFile;
outFile.open("C:\\data\\test.txt", std::ofstream::out | std::ofstream::app);
for (std::vector<CMDPoint> ::iterator it = clusterEntry->clusterPointArray.begin(); it != clusterEntry->clusterPointArray.end(); ++it)
{
outFile << ("%f", (*it).GetCoordinate(0)); // fails
outFile << " ";
}
outFile << "\n";
outFile.close();

问题是我只看到文件中的 ""。没有写入坐标。从 const float GetCoordinate(int nth) 获取值时我做错了什么吗?

最佳答案

尝试改变这个

outFile << ("%f", (*it).GetCoordinate(0)); // fails

为此:

outFile << (*it).GetCoordinate(0); // OK

因为 ("%f", (*it).GetCoordinate(0)) 不代表任何内容,仅代表由 , 分隔的表达式枚举。它不会像我认为的那样在 java 中被评估为一对对象。

编辑:("%f", (*it).GetCoordinate(0)) 实际上计算的最后一个元素是 (*i​​t).GetCoordinate(0)(PlasmaHH 评论)所以它仍然应该打印一些东西。但是,如果没有打印任何内容,则集合 clusterEntry->clusterPointArray 可能为空,并且 for 循环内的代码可能永远不会执行。

希望对您有所帮助,拉兹万。

关于c++ - 无法从 C++ 中的类获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19275520/

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