Получение CppUnit для чтения класса приложения на NetBeans 7.2

Я изучаю C ++ и CppUnit одновременно, используя NetBeans 7.2.

Я создаю следующий файл

#include <cstdlib>

using namespace std;

/*
*
*/
class Subtract{
public:
int minus(int a, int b){
return a-b;
}
};

int main(int argc, char** argv) {

return 0;
}

И затем я щелкаю правой кнопкой мыши, чтобы создать следующий тестовый файл cppunit

#include "newtestclass.h"

CPPUNIT_TEST_SUITE_REGISTRATION(newtestclass);

newtestclass::newtestclass() {
}

newtestclass::~newtestclass() {
}

void newtestclass::setUp() {
}

void newtestclass::tearDown() {
}

int Subtract::minus(int a, int b);

void newtestclass::testMinus() {
int a=89;
int b=55;
Subtract subtract;
int result = subtract.minus(a, b);
CPPUNIT_ASSERT_EQUAL(34,result);
}

Когда я пытаюсь запустить тест, он выдает следующие ошибки

g++    -c -g -I. -MMD -MP -MF build/Debug/GNU-MacOSX/tests/tests/newtestclass.o.d -o build/Debug/GNU-MacOSX/tests/tests/newtestclass.o tests/newtestclass.cpp
tests/newtestclass.cpp:25: error: 'Subtract' has not been declared
tests/newtestclass.cpp: In member function 'void newtestclass::testMinus()':
tests/newtestclass.cpp:30: error: 'Subtract' was not declared in this scope
tests/newtestclass.cpp:30: error: expected `;' before 'subtract'
tests/newtestclass.cpp:31: error: 'subtract' was not declared in this scope
make[1]: *** [build/Debug/GNU-MacOSX/tests/tests/newtestclass.o] Error 1
make: *** [.build-tests-impl] Error 2

Как мне заставить это работать должным образом?

-1

Решение

В C ++ принято объявлять классы и функции в заголовочном файле (файл .h) и реализовывать их в исходном файле (файл .cpp).

Ваш файл Subtract.h (декларации) должен иметь только это:

class Subtract {
public:
int minus(int a, int b);
};

Ваш файл Subtract.cpp (реализация) должен иметь следующее:

#include "Subtract.h"
int Subtract::minus(int a, int b)
{
return a-b;
}

Затем вы #include «Subtract.h» в вашем файле newtestclass.cpp.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]