现在要求通过C++设计一个用于记录数据的类,在代码中埋点调用该类可以记录事件发生的次数,统计某个事件的成功率或者结果类型。
举例来说,在代码每次完成任务时可以记录一次,根据完成的结果可以记录其成功的次数。现在有多个场景需要记录数据,有些指标是共有的,有些则是独特的,如何设计一个类来实现记录数据的效果呢?
给个思路吧,首先这个需要记录成功的次数,按照我的理解应该设计成单例模式,对外记录接口,进行记录每次成功的次数,
SuccessNum* SuccessNum::m_pSuccess = nullptr;
int SuccessNum::m_iNum = 0;
class SuccessNum
{
private:
explicit SuccessNum()
{
}
~SuccessNum()
{
}
static SuccessNum* m_pSuccess;
int m_iNum;
public:
void success()
{
m_iNum++;
}
public:
static SuccessNum* GetInstance()
{
std::once_flag flag;
std::call_once(flag, [&]()
{
if(m_pSuccess == nullptr)
m_pSuccess = new SuccessNum();
});
return m_pSuccess;
}
};
共有的指标定义成static成员,独特的定义成普通的成员:
class Data
{
public:
int 独有事件次数 = 0;
static int 共有时间次数; = 0
};
主程序
Data d1, d2;
d1.独有事件次数++;
d1.独有事件次数++;
d2.独有事件次数++;
cout << d1.独有事件次数 << " " << d2.独有事件次数 << endl;
Data.共有时间次数++;
cout << Data.共有时间次数;
不知道你这个问题是否已经解决, 如果还没有解决的话:#include<iostream>
using namespace std;
class prime
{
public:
prime(int p);
int pri_function(int j);
private:
int x;
};
prime::prime(int p)
{
1. x=p;
}
int prime::pri_function(int j)
{
int flag;
for(int t=2,flag=1; t<j&&flag==1; t++)
{if(j%t==0)
flag=0;
return flag;
}
}
class derived:
public prime
{
public:
derived(char *m);
int pf(int l);
protected:
char *c;
};
derived::derived(char *m):prime(2)
{
c=m;
}
int derived::pf(int l)
{
return prime::pri_function(l);
}
int main()
{
derived A("prime\n");
int n;
cout<<"please input a int: ";
cin>>n;
if(A.pf(n)==1)
cout<<n<<" is prime."<<endl;
else
cout<<n<<" is not prime ."<<endl;
return 0;
}