调用包含在头文件中的类对象的成员函数

时间:2011-02-23 15:11:54

标签: c++ linux

我是论坛新手,我想调用一个包含头文件的成员函数。这是我写的代码

#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);

我得到的不是类或命名空间

任何人都可以告诉我,我是否正确地做到了?

3 个答案:

答案 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