gpt4 book ai didi

C++ vector 实例变量

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:11 24 4
gpt4 key购买 nike

我是 C++ 的新手,遇到了一个我无法解决的问题。我得到的确切错误是:

First-chance exception at 0x760d34c5 in Pg1_raycast_nabrown3.exe: 0xC0000005: Access violation reading location 0x0e296575. Unhandled exception at 0x760d34c5 in Pg1_raycast_nabrown3.exe: 0xC0000005: Access violation reading location 0x0e296575.

这些是在我尝试访问 vector 实例变量时产生的。这是代码:

group.h

class Group {

private:
string name;
vector<Face*> members;
Material* material;

public:
Group(string n);
~Group();

void addFace(Face* f);
string getName();
vector<Face*> getMembers();
void setMaterial(Material * mat);
Material* getMaterial();
};

组.cpp

// Constructor
Group::Group(string n) {
name = n;
}

// Deconstructor
Group::~Group() {}

/**
* addFace
*
* adds the provided face to this group
*/
void Group::addFace(Face* f) {

// DEBUGGING
OutputDebugStringA("A\n");
OutputDebugStringA("A " + members.size());
members.resize(members.size() + 1);
OutputDebugStringA("B\n");
OutputDebugStringA("B " + members.size());

members.push_back(f);
}

调试语句只打印出一个“A”,所以它在第一个 members.size() 调用时崩溃。 addFace() 函数正在从另一个类调用,但我认为这不应该是相关代码。没有其他任何东西与成员 vector 交互。

非常感谢任何帮助。

编辑:显然,我对调试语句的尝试导致了更多问题。我想指出,即使删除您指出错误的调试语句,我仍然会收到原始错误。

void Group::addFace(Face* f) {

// DEBUGGING
OutputDebugStringA("A\n");

members.push_back(f);

// DEBUGGING
OutputDebugStringA("B\n");
}

最佳答案

您不能像在 C++ 中那样连接字符串。 "A " + members.size()是无效的指针算法。

您应该创建 std::string来自 "A "并转换 members.size()std::string , 所以这一行应该是这样的:

OutputDebugString((std::string("A ") + std::to_string(members.size())).c_str());

您需要 #include <string>让它工作。

关于C++ vector 实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25854769/

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