【发布时间】:2012-02-25 20:21:46
【问题描述】:
我遇到了 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);
}
如您所见,我还在 C++ 中运行用于 TDD 的 CUTE 插件。当我将 p 声明为 Population 类型并且第一个断言通过时,它不会抱怨。我对 C++ 有点陌生,但我确实确保将 Population.cpp 所在的项目添加到测试项目的包含路径中。
这不是什么大不了的事,因为它对我来说没有任何明显的影响,但它仍然很烦人。我没有看到它应该这样做的情况。
感谢您的帮助!
【问题讨论】: