转载:预处理命令使用详解----#if、#endif、#undef、#ifdef、#else、#elif - 蓝海人 - 博客园 (cnblogs.com)
其中说明一下##的作用:
我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.
其中#define 可以连续声明。以及可以多个参数。
将函数声明成纯虚函数接口,基类实现其内容。
#include <iostream>
#include <any>
using namespace std;
#define DeclareName(name) \
virtual void Get##name(any &data) =0;\
virtual void Set##name(any data) =0;
class A
{
public:
A() {};
~A() {};
public:
DeclareName(Info);
private:
};
class B:public A
{
public:
B() {};
~B() {};
void GetInfo(any& data) override;
void SetInfo(any data) override;
private:
int m_data=0;
};
void B::GetInfo(any& data)
{
data = m_data;
}
void B::SetInfo(any data)
{
if (data.type() ==typeid(int))
{
m_data = any_cast<int>(data);
}
}
int main()
{
B b;
b.SetInfo(10);
any data;
b.GetInfo(data);
if (data.type() == typeid(int))
{
std::cout << any_cast<int>(data) << endl;
}
return 0;
}