class IA
{
public:
virtual void a() = 0;
};
class A: virtual public IA
{
public:
virtual void a()
{
}
};
class IB: virtual public IA
{
public:
virtual void b() = 0;
};
class B: virtual public IB, public A
{
public:
virtual void b()
{
}
};
Run Code Online (Sandbox Code Playgroud)
你是否总是像我一样继承你的界面虚拟?如果没有,您将如何强制执行上述代码?
我有一个从另一种语言移植的功能,你能帮我把它变成"pythonic"吗?
这里的函数以"非pythonic"的方式移植(这是一个人为的例子 - 每个任务都与项目或"无"相关联,我们需要一个不同项目的列表,不同的意思是没有重复的.identifier属性,从任务列表开始):
@staticmethod
def get_projects_of_tasks(task_list):
projects = []
project_identifiers_seen = {}
for task in task_list:
project = task.project
if project is None:
continue
project_identifier = project.identifier
if project_identifiers_seen.has_key(project_identifier):
continue
project_identifiers_seen[project_identifier] = True
projects.append(project)
return projects
Run Code Online (Sandbox Code Playgroud)
我特别没有开始让它"pythonic"不要从错误的脚开始(例如列表理解"如果project.identifier不是None,filter()基于查找基于字典的标识符注册表的谓词,使用set()去除重复项等)
编辑:
根据反馈,我有这个:
@staticmethod
def get_projects_of_tasks(task_list):
projects = []
project_identifiers_seen = set()
for task in task_list:
project = task.project
if project is None:
continue
project_identifier = project.identifier
if project_identifier in project_identifiers_seen:
continue
project_identifiers_seen.add(project_identifier)
projects.append(project)
return projects
Run Code Online (Sandbox Code Playgroud) 我们使用 S3 来在线存储文件。为了降低成本,可以使用提前已知的路径按需生成其中的许多文件。
是否可以让 S3 存储桶将丢失的对象请求重定向到我预先配置的端点(然后可以按需生成和提供文件)?
例如,对http://bucket1.s3.amazonaws.com/path2/file3.jpg的请求会临时重定向 (307) 到http://mydomain.com/missing_s3_obj/bucket1/path2/file3.jpg。
我试图让用户输入a String来搜索列表中的值.这工作正常,但我也希望String有一个数值.这样我就可以在列表价格中获得特定项目.我试过了:
public List<String, double>
Run Code Online (Sandbox Code Playgroud)
然而,这总是给我一个错误.如何存储字符串及其相应的数值?
我之前搜索过但找不到任何答案.我对c ++有些新意,所以希望这个问题不会太愚蠢.
我试图在向量中添加和删除元素,在我的情况下,在大型更新期间填充粒子或在所有粒子上绘制循环.例如,移除一些粒子,因为它们已经死亡,但也添加了一些粒子,因为一个粒子与一个物体相撞,我想在碰撞点显示一个小粒子爆发.我在演示文件中制作了这个简单的测试代码,以找到问题的根源.
我认为问题是因为我删除并添加粒子,迭代器指针变得无效.删除工作,但当我添加一些随机的,我得到一个空指针.下面的代码有点冗长,我知道我应该使用带有begin()和end()的迭代器,但我遇到了同样的问题,并且稍微使用了代码,尝试更多的javascript数组样式循环因为我更熟悉那.
void testApp::drawParticles()
{
int i=0;
int max = particles.size();
vector<Particle*>::iterator it = particles.begin();
while ( i < max ) {
Particle * p = particles[i];
if ( ofRandom(1) > .9 ) {
it = particles.erase(it);
max = particles.size();
} else {
ofSetColor(255, 255, 0);
ofCircle( p->x, p->y, p->z, 10);
if ( ofRandom(1) < .1 ) addSomeNewOnes();
i++;
it++;
}
}
}
void testApp::addSomeNewOnes()
{
int max = ofRandom(4);
for ( int i=0; i<max; i++ ) { …Run Code Online (Sandbox Code Playgroud) 如果我编写类似下面的程序,g ++和visual studio有礼貌地警告我从不使用局部变量a:
int main()
{
int a; // An unused variable? Warning! Warning!
}
Run Code Online (Sandbox Code Playgroud)
如果我删除未使用的变量(以使编译器满意),它将给我以下程序:
int main()
{
// An empty main? That's fine.
}
Run Code Online (Sandbox Code Playgroud)
现在,我留下了一个无用的程序.
也许我错过了一些东西,但是,如果一个未使用的变量足以引发警告,为什么一个空程序可以正常?
上面的例子非常简单.但在现实生活中,如果我有一个空主要的大程序(因为我忘了把任何东西放进去).然后发出警告应该是一件好事,不是吗.
也许我错过了g ++或visual studio中的一个选项,它可以在main为空时引发警告/错误?