class c1
{
public:
int m;
};
class c2
{
public:
int m;
};
class c3
{
public:
int m;
};
class A
{
public:
A(c1* p);
A(c2* p);
A(c3* p);
void Fun();
private:
c1* p1;
c2* p2;
c3* p3;
};
void A::Fun()
{
//这部分功能是c1,c2,c3类都要调用的一个函数,只是根据传过来的指针不同进行操作
//比如
if (是c1调用的)
{
p1->m = ...;
...
...
}
else if (c2调用的)
{
p1->m = ...;
...
...
}
else
{
p1->m = ...;
...
...
}
}
我想问的问题是如何在fun函数中不通过if else判断来实现这样的功能,因为if else中除了第一句
用到的指针不一样,其它部分完全一样,我觉得应该有办法简化fun函数吧,请大家帮助
{
public:
int m;
};
class c2
{
public:
int m;
};
class c3
{
public:
int m;
};
class A
{
public:
A(c1* p);
A(c2* p);
A(c3* p);
void Fun();
private:
c1* p1;
c2* p2;
c3* p3;
};
void A::Fun()
{
//这部分功能是c1,c2,c3类都要调用的一个函数,只是根据传过来的指针不同进行操作
//比如
if (是c1调用的)
{
p1->m = ...;
...
...
}
else if (c2调用的)
{
p1->m = ...;
...
...
}
else
{
p1->m = ...;
...
...
}
}
我想问的问题是如何在fun函数中不通过if else判断来实现这样的功能,因为if else中除了第一句
用到的指针不一样,其它部分完全一样,我觉得应该有办法简化fun函数吧,请大家帮助
{
p2->m = ...;
...
...
}
else
{
p3->m = ...;
...
...
}
应该是这样的,发错了
{
//这部分功能是c1,c2,c3类都要调用的一个函数,只是根据传过来的指针不同进行操作
//比如
if (是c1调用的)
{
p1->m = ...;
}
else if (c2调用的)
{
p1->m = ...;
}
else
{
p1->m = ...;
}
//共通代码
...
...}
class A
{
public:
A(c1* p)
{
p1 = p;
m_pMember = &(p->m);
};
A(c2* p)
{
p2 = p;
m_pMember = &(p->m);
};
A(c3* p);
{
p3= p;
m_pMember = &(p->m);
}; void Fun();
private:
c1* p1;
c2* p2;
c3* p3;
//假设m是int类型
int *m_pMember;
};
void A::Fun()
{
//这部分功能是c1,c2,c3类都要调用的一个函数,只是根据传过来的指针不同进行操作
//比如
m_pMember = ...
//共通代码
...
...
}