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();