【发布时间】:2018-06-25 02:42:35
【问题描述】:
我在对象上调用一些非 const 成员函数时遇到问题。 这个想法是在给定对象上调用成员函数。这适用于 const 函数,但如果我有一些非 const 函数并尝试更改其中的值,程序会崩溃并退出 code=3221225477
#include <functional>
#include <iostream>
struct Test
{
int testVal = 0;
/* Call a given function on 10 objects */
void callFunctionOnMultipleObjects(void (Test::*func)())
{
for(int i=0;i < 10; i++)
{
Test *test;
Test::callTestFunction = func;
Test::callTestFunction(test);
}
std::cout << "**************** \n";
}
/* Test Functions */
void testFunction1(){
std::cout << "some const/static action \n";
}
void testFunction2(){
std::cout << "non const/static action \n";
/* The Program crashes here */
testVal ++;
}
std::function<void(Test *)> callTestFunction;
};
int main()
{
Test test;
test.callFunctionOnMultipleObjects(&Test::testFunction1);
test.callFunctionOnMultipleObjects(&Test::testFunction2);
return 0;
}
如何更改我的代码,以便可以调用这样的非常量函数?
【问题讨论】:
-
exit code=3221225477 是 0xC0000005,这意味着 - 访问冲突。您是否尝试在调试器中单步执行您的代码?
-
是的,我在 testVal ++ 评论的地方崩溃了
-
那么,你调查过局部变量的值吗?知道它在哪里崩溃只是故事的一方面..
-
第一次尝试更改值时崩溃
-
请重新阅读我的评论。您的最新评论与我的问题无关。
标签: c++