我一直认为,只有两个默认构造函数:没有参数的构造函数和复制构造函数.
但是今天我写了这样的话:
首先,我想确保在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)
好的,这很有效.但是接下来,我决定检查后变化会发生什么struct来class.
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)功能还是这正是标准所说的?
[编辑] …
这是我的状态图:

我的游戏更改状态仅在用户操作后才会出现(只有例外情况是"时间到了").
我不知道如何实施我的机制,这将有助于我的状态之间的交流.
我应该定义适当的枚举吗?每个州是否应该有自己的方法?如何控制改变状态是否可以接受?
欢迎任何提示!
我知道可以像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) 我使用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)