小编Dav*_*Lim的帖子

Android - 将图像存储在mipmap vs drawable文件夹中

作为一般规则,在存储用于Android项目的图像资源时,是否应将它们放在res/drawableres/mipmap文件夹中?

对于这个简单的问题道歉,我对Android开发相对较新.我正在使用的IDE是Android Studio 1.0.

android

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

如果虚函数没有实现,大多数派生类都无法编译,但如果一个基类没有实现虚函数,则可以编译

我有一个包含4个类的C++程序:Person,Student,Employee和PartTimeStudent.

Student和Employee都派生自Person,而PartTimeStudent派生自所有3个类(使其成为派生程度最高的类).Person,Student和Employee也有一个名为VDescribe()的派生函数.

请参阅以下代码:

class Person
{
    ...    
    virtual void VDescribe();
    ...
};

class Student : virtual public Person
{
    ...    
    virtual void VDescribe();
    ...
};

class Employee : virtual public Person
{
    ...    
    virtual void VDescribe();
    ...
};

class PartTimeStudent : virtual public Person,
    virtual public Student,
    virtual public Employee
{
    ...
};
Run Code Online (Sandbox Code Playgroud)

注意:在上面的代码片段中,我省略了构造函数,析构函数和成员变量,因为它们与手头的问题无关.

当我尝试编译代码时,我收到以下错误:

override of virtual function "Person::VDescribe" is ambiguous

'PartTimeStudent': ambiguous inheritance of 'void Person::VDescrive(void)'

'PartTimeStudent': ambiguous inheritance of 'void Person::VDescribe(void)'
Run Code Online (Sandbox Code Playgroud)

但是,仅当Student和Employee都实现VDescribe()时才会出现这种情况.如果其中一个类未实现VDescribe(),则编译成功.我仍然会收到警告,例如,如果我从Employee中省略VDescribe(),则会出现以下警告:

'PartTimeStudent': inherits 'Student::Student::VDescribe' via dominance …
Run Code Online (Sandbox Code Playgroud)

c++ overriding virtual-functions multiple-inheritance virtual-inheritance

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