小编noi*_*isy的帖子

默认构造函数,为什么我的班级似乎有三个?当编译器对待像结构这样的类时?

我一直认为,只有两个默认构造函数:没有参数的构造函数和复制构造函数.

但是今天我写了这样的话:

首先,我想确保在C++中c-style结构的初始化仍然有效.

struct Foo{
    int a;
    bool b;
    char* c;
    double d;
};
//..
Foo arr[2]={{0, true, "a", 3.14}, {1, false, "z", 42.0}};
Run Code Online (Sandbox Code Playgroud)

好的,这很有效.但是接下来,我决定检查后变化会发生什么structclass.

class Bar{
 public:
    int a;
    bool b;
    char* c;
    double d;
};

//..

Bar arr[2]={{0, true, "a", 3.14}, {1, false, "z", 42.0}};//works
Bar bar;                                                 //works
Bar bar2=arr[1];                                         //works
//Bar bar3(2, false, "so", 7.0);                         //of course doesn't work
//first, second, third ways works... 
Run Code Online (Sandbox Code Playgroud)

只要class Bar没有任何私有/受保护字段(但它可以包含方法),这是可编译的.因此,只要编译器可以创建仅使用结构的简单特征的类,那么可以编译它.

  • 第一个问题:我是对的吗?

  • 第二个问题:它是编译器(在这种情况下是gcc)功能还是这正是标准所说的?

[编辑] …

c++ constructor struct class

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

如何根据状态图设计和实现游戏?

这是我的状态图:

状态图

我的游戏更改状态仅在用户操作后才会出现(只有例外情况是"时间到了").

我不知道如何实施我的机制,这将有助于我的状态之间的交流.

我应该定义适当的枚举吗?每个州是否应该有自己的方法?如何控制改变状态是否可以接受?

欢迎任何提示!

diagram state design-patterns

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

来自导入应用程序的模型的Django夹具(如django-allauth)

我知道可以像initial_data.json我自己的模型一样创建灯具文件.我想为导入的django-allauth应用程序创建和使用的表创建类似的文件.

我试过了:

[
    {
        "model":"allauth.socialaccount.models.SocialApp",
        "pk":1,
        "fields":{
            "id":"1",
            "provider":"facebook",
            "name":"facebook",
            "client_id":"0011223344556677",
            "key":"",
            "secret":"012345678901234567890123456"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

然而,最终会出现错误:

python manage.py syncdb
Creating tables ...
Installing custom SQL ...
Installing indexes ...
DeserializationError: Problem installing fixture 'initial_data.json': 
  Invalid model identifier: 'allauth.socialaccount.models.SocialApp'
Run Code Online (Sandbox Code Playgroud)

django json django-fixtures django-allauth

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

mutual_exclusive_group,带有可选和位置参数

我使用docopt创建了一个cli规范,但是由于某种原因我必须将它重写为argparse

Usage:
    update_store_products <store_name>...
    update_store_products --all

    Options:
      -a --all     Updates all stores configured in config
Run Code Online (Sandbox Code Playgroud)

怎么做?

什么是重要的我不想有这样的东西:

update_store_products [--all] <store_name>...
Run Code Online (Sandbox Code Playgroud)

我认为这将是这样的:

update_store_products (--all | <store_name>...)
Run Code Online (Sandbox Code Playgroud)

我尝试使用add_mutually_exclusive_group,但是我收到了错误:

ValueError: mutually exclusive arguments must be optional
Run Code Online (Sandbox Code Playgroud)

python argparse docopt

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