我有以下继承层次结构
class A{
virtual bool fun() = 0;
};
class B: public A{
...
}
class C: public B{
...
}
class D: public C{
...
}
class E: public B{
...
}
Run Code Online (Sandbox Code Playgroud)
在我正在执行的主程序中
for(auto pA: ObjVector)
{
if(pA->fun()){
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道pA是否包含基类B对象.据我所知2种方式
dynamic_cast所有派生类的对象和测试,如果它全部失败dynamic_casts并且只传递,B我们确定该对象是类型的B
再添加一个接口方法,该方法将返回类型enumeration
值并标识该B对象.
是否有其他方法来识别B班级?
当我尝试研究一些处理 FPGA 的代码时,我遇到了 munmap、mmap。
我仔细阅读此处提供的手册。我仍然不明白这个功能的目的。这究竟是做什么的?
最初我认为移动构造函数不会调用临时对象析构函数,但是当我尝试它时调用析构函数.所以当我们从移动构造函数中窃取数据时,我得到双删除错误.
#include <iostream>
using namespace std;
class A
{
public:
A()
: name("default")
{
cout<<"i am default\n";
data = new char[20];
}
A(A&& t)
: name("move")
{
data = t.data;
cout<<"i am move\n";
}
~A()
{
delete data;
cout<<"I am done:"<<name<<endl;
}
char * data;
string name;
};
A getA()
{
A obj;
return obj;
}
int main()
{
A test(std::move(getA()));
}
Run Code Online (Sandbox Code Playgroud) 我的代码有问题.它始终返回错误ISO C++禁止指针和整数[-fpermissive]之间的比较.你能帮我看看这里有什么问题以及如何解决?
#include <iostream>
using namespace std;
char x;
int main()
{
cout << "Welcome to the citation machine. What do you want to cite?" << endl;
cin >> x;
if (x == "book")
{
cout << "What is the name of the book?";
}
}
Run Code Online (Sandbox Code Playgroud)