Почему покрытие кода «яблочко» не отслеживает чисто виртуальную функцию унаследованного класса? - PullRequest
1 голос
/ 06 июля 2011

У меня возникла проблема с покрытием кода Bullseye. Это трассирующая способность программы. Следующий код не отслеживается.

class A
{
public:
    virtual void func() = 0;
};

class B
{
public:
    virtual void func()
    {
         std::cout << "Am I traced?" << std::endl;
    }
};

void main()
{
    A *pa = new B;
    pa->func();
}

Полагаю, что яблочко не может отследить чисто виртуальную функцию. Если есть кто-то, кто знает о программе, пожалуйста, дайте мне несколько советов.

1 Ответ

2 голосов
/ 06 июля 2011

У вас 2 ошибки, в данной программе:

void func() = 0;

должно быть,

virtual void func() = 0;

А,

class *pa = new B;

должно быть,

class B *pa = new B;  // `class` keyword not needed

Также обратите внимание, что A и B не связаны (без наследования).

...