我试图在我已编写的C++程序中将此代码用于Porter词干算法.我按照文件末尾附近的说明将代码用作单独的模块.我创建了一个文件,stem.c,它在定义之后结束并且有
extern int stem(char * p, int i, int j) ...
Run Code Online (Sandbox Code Playgroud)
它在Xcode中工作得很好,但是在使用gcc 4.1.1的Unix上它不起作用 - 奇怪,因为通常我在两者之间移动没有问题.我收到了错误
ld:fatal:符号`stem(char*,int,int)'是多重定义的:(文件/var/tmp//ccrWWlnb.o type = FUNC; file /var/tmp//cc6rUXka.o type = FUNC) ; ld:致命:文件处理错误.没有输出写入集群
我看过网上看起来似乎有很多我可能有错的东西,但我不确定头文件,extern"C"等的组合是否有效.
我正在开展一个小型的课程作业,所以我把它全部放在一个文件中.现在它变得更大了,我正在尝试单独编译main,函数和类(所以所有类都在一个.h和一个.cpp中)我有一个B类,它是很多其他类的父类在文件中排在第一位.其中一个数据成员现在没有工作,我正在使用单独的编译,这会导致许多错误.
在.h
class A;
class B {
public:
B (){}
A* myptr;
void whatever();
vector<A*> myAs; //this one is the problem
};
Run Code Online (Sandbox Code Playgroud)
在.cpp
void B::whatever() {
vector<A*> newvector; //no problem!
myptr = &something; //no problem!
for (vector<A*>::iterator iter = myAs.begin(); iter != myAs.end(); ++iter) {
//error!
}
}
Run Code Online (Sandbox Code Playgroud)
我得到错误:"myAs未在此范围内声明"或"B类没有成员myAs".
我已经包含了<vector>,前面声明的A类,如上所示,我绝对记得在.cpp的顶部包含.h!是否有关于向量或类的东西以及我不理解的单独编译?这是在Xcode,BTW.