2014-12-30 5 views
1

У меня есть класс A, имеющий ряд частных/общественных функций-членов/переменных. Я добавил к нему новую функцию частного участника. В рамках тестирования недавно добавленного метода мне нужно вызвать функцию private member из моего тестового класса. В случае переменных-членов Я видел пример, как показано ниже:Доступ к частной функции-члена класса

#include <iostream> 
using namespace std; 

class test 
{ 
    private: 
      int myInt; 
    public: 
      int getInt() {return myInt;} 
}; 

int main() 
{ 
    test t; 
    int* p = (int*) & t; 
    *p = 20; 
    cout << t.getInt(); 
} 
Output:20 

Есть ли надежный способ, которым я могу получить доступ к функции частного члена таким образом, что не существует никакой модификации кода в классе A?

+2

_ "так, чтобы в классе A не было модификации кода?" _ Нет! –

+0

Нет, вы используете грязные трюки (возможно, U.B.), как тот, который вы используете в приведенном вами примере кода, или вы настраиваете класс. (BTW, я не вижу класса A в вашем коде.) – gd1

+0

Как вы показали, есть способы, но вы можете повеселиться с неприличными типами, проститутками для методов в зависящих от платформы ботинками, а дилеры данных, использующие используемые библиотеки , Если это для модульного тестирования, у вас есть больше опций, также как и правильные точки. – dwn

ответ

0

Вы можете изменить модификаторы доступа класса с помощью макроса #define private public для тестирования, но это не очень хорошая идея. Я думаю, вам нужно рассмотреть подход к тестированию

Смежные вопросы