Visual studio 2013 C++;Visual Studio 2013-Windows Phone(访问冲突错误)

Visual studio 2013 C++;Visual Studio 2013-Windows Phone(访问冲突错误),visual-studio-2013,windows-phone-8.1,c++-cli,Visual Studio 2013,Windows Phone 8.1,C++ Cli,我有一个大问题,可惜我解决不了。我已将以下类添加到我的项目中: ref class NavigationContext sealed { private: int combobox1; int combobox2; int combobox3; public: NavigationContext(); public: int rcombobox_1() { return combobox1; } }; Navigat

我有一个大问题,可惜我解决不了。我已将以下类添加到我的项目中:

ref class NavigationContext sealed
{
private:
    int combobox1;
    int combobox2;
    int combobox3;



public:
    NavigationContext();



public:
    int rcombobox_1() {
        return combobox1;
    }

};

NavigationContext^ StaticData;
关键是,当我尝试调用“int rcombobox_1()”函数时,会出现访问冲突错误。为什么?有没有其他方法可以从私有变量中检索数据

我不得不修改你的代码,因为它不想被编译。现在看起来是这样的:

    ref class NavigationContext sealed
{
private:
    int combobox1;
    int combobox2;
    int combobox3;



private:
    NavigationContext();
    NavigationContext(const NavigationContext^);
    NavigationContext^ operator=(const NavigationContext^);


public:


    static NavigationContext^ instance() {
        static NavigationContext^ theInstance;
        return theInstance;

    }



    int rcombobox_1() {
        return combobox1;
    }

};
…我用了你的电话线,但还是不行。“&”符号在我的IDE中不起作用,我将其改为^,但我不知道这是否正确

错误消息:“Losowanie Lotto.exe中0x00C99331处的首次机会异常:0xC0000005:访问冲突读取位置0x00000010

如果有此异常的处理程序,则程序可以安全地继续。”

最终我找到了解决办法。必须使用以下行创建对象的实例:

NavigationContext^ StaticData = ref new NavigationContext();
“问题是,当我试图调用
int rcombobox_1()
函数时,我遇到了访问冲突错误。为什么?”

您正在取消引用未分配给
NavigationContext
的有效实例的指针

“是否有其他方法从专用变量检索数据?”

我和你的getter函数没有任何关系,这没关系


至于评论


“您在哪里为这个指针分配了内存?”


“对不起,我是初学者。我怎么做?”

看起来您想要的是单例指针,而不是全局(未初始化)指针:



可能还有其他解决方案专门对此进行了标记,这些解决方案考虑了垃圾收集机制。

您的问题很可能来自所示代码之外的其他地方。如何创建
NavigationContext
的实例?使用以下行:NavigationContext^StaticData;你在哪里为这个指针分配了内存?对不起,我是初学者。我该怎么做?“但它仍然不起作用。”请具体说明。将错误消息逐字记录到问题中。
ref class NavigationContext sealed {
private:
    int combobox1;
    int combobox2;
    int combobox3;

    NavigationContext();
    NavigationContext(const NavigationContext&);
    NavigationContext& operator=(const NavigationContext&);

public:
    static NavigationContext& instance() {
        static NavigationContext theInstance; // <<< This statement 
                                              //     allocates the
                                              //     memory.
        return theInstance;
    }
    int rcombobox_1() {
        return combobox1;
    }

};
int rcCombo1 = NavigationContext::instance().rcombobox_1();