小编jiy*_*iyi的帖子

访问冲突读取位置0x000000004

我正在Visual Studio中进行C++编码练习,并将此问题显示为标题.我知道问题发生在哪里,但我不知道为什么会发生这种情况以及如何解决问题.请帮我解决一下这个.

class_templete.h

typedef std::string QuestionName;
class ClassTemplete
{
public:
    ClassTemplete(Question iQuestionName);
private
    static std::map<QuestionName,ClassTemplete *> questionName_questionPointer_map_;
}
Run Code Online (Sandbox Code Playgroud)

class_templete.cpp

map<QuestionName, ClassTemplete *> ClassTemplete::questionName_questionPointer_map_;

ClassTemplete::ClassTemplete(QuestionName iQuestionName)
{
    ClassTemplete::questionName_questionPointer_map_[iQuestionName] = this;
}
Run Code Online (Sandbox Code Playgroud)

chapter1_question1.h

class C1Q1 : public ClassTemplete
{
public:
    C1Q1(QuestionName iQuestionName) : ClassTemplete(iQuestionName) {};
private:
    static QuestionName question_name_;
    static C1Q1 question_instance_;
}
Run Code Online (Sandbox Code Playgroud)

chapter1_question1.cpp

QuestionName C1Q1::question_name_ = "C1Q1";
C1Q1 C1Q1::question_instance_(C1Q1::question_name_);
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,我发现问题发生在这个地方:

ClassTemplete::questionName_questionPointer_map_[iQuestionName] = this;
Run Code Online (Sandbox Code Playgroud)

但是,我无法解释为什么会发生这种情况.

如果需要更多信息,请随时与我联系.

亲切的问候,

易记

c++ access-violation visual-c++

1
推荐指数
1
解决办法
227
查看次数

如果只声明了复制构造函数,如何创建第一个对象?

我今天在网上看到了一个C++ 03示例.

class Cat {
    public:
        Cat(const Cat& iCat);
};
Run Code Online (Sandbox Code Playgroud)

有人告诉我,在这种情况下,编译器不会自动生成默认构造函数.如果为true,则表示可以从现有Cat对象创建新的Cat对象.

在这种情况下,有人能告诉我如何创建第一个Cat对象吗?如果我的理解是错误的,请善意地纠正我.

c++ copy-constructor default-constructor

1
推荐指数
1
解决办法
179
查看次数

DjangoassertTemplateUsed 重定向后失败

我正在从事 Django 2.1 实践项目。我的测试的最后一行一直失败。
如果发生重定向,assertTemplateUsed 检查是否不起作用?

回溯(最近一次调用最后):
文件“test_views.py”,第24行,在test_home_page_not_login_redirect self.assertTemplateUsed(resp,'users/home.html')
文件“testcases.py”,第554行,在assertTemplateUsed self.fail( msg_prefix +“没有用于呈现响应的模板”)
断言错误:没有用于呈现响应的模板

test_views.py
def test_home_page_not_login_redirect(self):
    resp = self.client.get('/')
    self.assertEqual(resp.status_code, 302)
    self.assertRedirects(resp, '/accounts/login/?next=/')
    self.assertTemplateUsed(resp, 'users/login.html')
Run Code Online (Sandbox Code Playgroud)


urls.py
url(r'^login/$',
    auth_views.LoginView.as_view(
        template_name='users/login.html',
        redirect_authenticated_user=True),
    name='users_login'),
Run Code Online (Sandbox Code Playgroud)


settings.py
LOGOUT_REDIRECT_URL = '/accounts/login/'
Run Code Online (Sandbox Code Playgroud)

python django django-unittest

1
推荐指数
1
解决办法
1343
查看次数

c ++ std :: find自定义比较器不起作用

我现在正在学习如何使用std :: find和自定义比较器.

但是,通过在线指导,我面临编译器错误.

链接到我的代码.

以下是我的代码:

    #include <iostream>
    #include <algorithm>
    #include <pair.h>
    #include <vector>

    using namespace std;

    int main()
    {
        struct comp
        {
            comp(const int& input) : _input(input) {}
            bool operator()(const pair<int, int>& iPair)
            {
                return (iPair.first == _input);
            }
            int _input;
        };

        pair<int, int> pair1(1,3);
        pair<int, int> pair2(2,4);

        vector<pair<int, int> > vec;
        vec.push_back(pair1);
        vec.push_back(pair2);

        vector<pair<int,int> >::iterator it = find(vec.begin(), vec.end(), comp(1));
        if(it != vec.end())
        {
            cout << it->second << endl;
        }

        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

错误如下:

In function …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector find custom-compare

-3
推荐指数
1
解决办法
897
查看次数