c++ - 指针对象成员的访问冲突

标签 c++ pointers access-violation

所以我正在编写这个客户端/服务器程序。此代码来自客户端。客户端有一个对象的实例

mpqs_sieve *instance_;

我将其作为指针的原因是,mpqs_sieve 只有一个接受 3 个参数的构造函数,我想在稍后的时间点实例化它。

客户端首先从服务器获取一些数据,并用它来实例化instance_。在此之后,它将请求更多数据,并在收到数据后(这是二次多项式的三个系数),它应该在 instance_ 对象中设置这些数据。但是,在调用 instance_ 的成员函数时,我在该函数调用中的 instance_ 成员之一遇到了访问冲突。

我在这里发布了我的代码:on pastebin ,我在第 100 行收到错误。调用来自第 71 行,在第 21 行之前。这是摘录:

class client_protocol {
public:
    static std::string parse_message(
        network_message& msg, mpqs_sieve *instance_)
    {
        // ...
        return set_mpqs_data(m.substr(i+1), instance_);
    }

private:
    static std::string set_mpqs_data(
        std::string data, mpqs_sieve *instance_)
    {
        instance_ = new mpqs_sieve(n, M, FB_count);
        // ...
    }
};

有什么解决办法吗?

最佳答案

您正在将 instance_ 指针的拷贝传递给函数,而不是对变量的引用。当您分配给 instance_ 时,您正在修改局部变量,而不是具有相同名称的成员变量。

将函数参数更改为mpqs_sieve *&instance_

关于c++ - 指针对象成员的访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2713043/

相关文章:

python - 通过 pybind11 迭代在 Python 中包装的 C++ 对象

c# - 重写抽象方法的 System.AccessViolationException

c# - 为非托管代码提供托管控制句柄 - 访问冲突

c++ - 如何从自身加入 std::thread(在 C++11 中)

c++ - 我从指针得到一个未初始化的对象

c++ - 在 SDL 中同时处理多个按键

c - volatile 和 const 指针

windows-7 - 计划任务导致访问冲突,但手动运行正常

c++ - 如何将位图读取为 GLubyte 数组?

c++ - 缓存优化和多态性