В моем классе: Я хочу создать публичную функцию, которая в качестве аргумента является частным членом класса. И иметь возможность вызвать эту функцию извне класса.C++ - вызов публичной функции с частными аргументами
Нечто подобное:
class MailToTerm
{
public:
MailToTerm();
int getPrivMax(intWithMax priv) {return priv.getMax();} //my public function
void initPrivMax(intWithMax priv) {return priv.initMax();}
void getMutexObjPriv(intWithMax priv) {return priv.GetMutexObj();}
void relMutexObjPriv(intWithMax priv) {return priv.RelMutexObj();}
private:
intWithMax cnter_multi_busy ;
intWithMax cnter_mono_busy ;
intWithMax cnter_light_busy ;
}
int main(){
MailToTerm* pt_MailToTerm = new MailToTerm();
int multi = pt_MailToTerm->getPrivMax(MailToTerm::cnter_multi_busy);
int mono= pt_MailToTerm->getPrivMax(MailToTerm::cnter_mono_busy);
}
Это не работает, потому что cnter_multi_busy рассматривается как «частный», так что я не разрешен доступ к нему. Как мне это сделать?
Вы не должны. 'private' специально для вещей, которые вам не нужны, кроме класса, с которым вы сталкиваетесь. Если это не то, что вы хотите, оно, вероятно, не должно быть частным. – cHao
Что вы действительно хотите сделать? Общий доступ для * любого * члена? Подход, который вы принимаете, неверен, 'MailToTerm :: cnter_multi_busy', используемый вне' MailToTerm', является ** не ** 'intWithMax', но что-то запутанное, что я даже не могу описать в простом предложении (' & MailToTerm :: cnter_multi_busy' является указатель на член, но 'MailToTerm :: cnter_multi_busy' - это только квалифицированное имя) –
Не делайте этого. Изучите свой дизайн, вы не должны экстернализировать частных членов. Вот почему они являются частными – SomeWittyUsername