我是论坛新手,我想调用一个包含头文件的成员函数。这是我写的代码
#include<stdio.h>
#include "Abc.h"
CAbc *a;//CAbc is a class present in Abc.h
int main(int argc,char **argv)
{
int i=10;
float j=15.5;
bool x;
x=a->method(i,j);//method is a member function of CAbc
if(x)
{
printf("Working Correctly");
}
else
{
printf("Not Working");
}
}
如果我使用
编译它g++ -I/path/to/include code.cpp
我收到了错误
/tmp/cc5JgLfF.o: In function `main':
code.cpp:(.text+0x3d): undefined reference to `CAbc::method(int,float)'
collect2: ld returned 1 exit status
我也尝试过给予
x=a::method(i,j);
我得到的不是类或命名空间
任何人都可以告诉我,我是否正确地做到了?
答案 0 :(得分:3)
看起来好像忘记了包含实现源/对象。
试试这个:
g++ -I/path/to/include Abc.cpp code.cpp
只要你的Abc.h实现类对应Abc.cpp。
的问候,
丹尼斯M。
答案 1 :(得分:1)
你的make文件或CABC.obj到整个exe的链接是什么?如果是这样,那么你忘记编写方法的实现(正文,定义)......
答案 2 :(得分:0)
正如其他人所说的那样,确保已经链接了CAbc.method的实现。此外,您需要为指针'a'分配和释放内存;目前它尚未初始化。
a = new CAbc();
...
del a