У меня есть проблема с Eclipse Indigo, которая жаловалась на то, что методы класса не могут быть решены, но все равно компилируются и работают правильно (AFAIK).Это очень простая программа.Вот Population.cpp:
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include "Population.h"
Population::Population() {
// TODO Auto-generated constructor stub
}
Population::~Population() {
// TODO Auto-generated destructor stub
}
void Population::initializePop(int numBits, int N) {
srand((unsigned)time(0));
for(int i=0; i<N; i++) {
x[i] = (char*) calloc(numBits, sizeof(char));
for(int j=0; j<numBits; j++) {
if( rand() < 0.5 )
x[i][j] = 0;
else
x[i][j] = 1;
}
}
}
char** Population::getX() {
return x;
}
void Population::printStuff() {
std::cout << "Whatever";
}
Теперь я создаю этот код, и все в порядке.В другом проекте в Eclipse я называю этот код следующим образом:
#include <typeinfo>
#include <string.h>
#include <iostream>
#include "cute.h"
#include "ide_listener.h"
#include "cute_runner.h"
#include "Population.cpp"
void testPopulationGeneration() {
Population* p = new Population;
int N = 10;
int bits = 4;
char** pop;
ASSERTM("Population variable improperly initialized", dynamic_cast<Population*>(p));
std::cout << p->printStuff();
std::cout << "Ok...";
p->initializePop(bits, N);
pop = p->getX();
ASSERTM("Pop not correct size.", sizeof(pop) == 10);
}
Как вы можете видеть, я также запускаю плагин CUTE для TDD в C ++.Он не жалуется, когда я объявляю p типом Population, и первое утверждение проходит.Я немного новичок в C ++, но я обязательно добавил проект, из которого создан Population.cpp, в путь включения для тестового проекта.
Это не так уж сложно, поскольку это не влияет на что-либо очевидное дляменя, но это все еще очень раздражает.Я не вижу ситуации, когда он должен это делать.
Спасибо за любую помощь!