我正在尝试编译一个简单的测试程序,并且我包含的头文件之一具有以下typedef

typedef const char* CharConst;
typedef unsigned int MyBool;

稍后在头文件中,使用此typedef定义了一些功能。像这样的东西:
MyBool add_att(CharConst attr, const char*);

当我尝试通过以下方式调用此函数时出现错误:
CharConst myconst = "some text";
const char* more_text = "more text";
add_att(myconst, more_text);

错误是:未定义对`MyClass::add_att(char const *,char const *)的引用”

似乎编译器不喜欢第一个参数已在头文件中进行类型定义的事实。但它不介意MyBool。编译器仅抱怨CharConst定义。

有什么简单的方法可以解决此问题?关于我能做什么的任何线索或提示?我正在运行gcc版本4.6.2

最佳答案

从错误看来,add_att是一个类的方法。我看不到您的类的实例来调用该方法。考虑一下:MyClass * m = new MyClass(); m-> add_att(....)

或者,确保实际定义函数,而不仅仅是原型(prototype)。另外,这可能并不重要,但是在函数定义期间-您是否在函数参数中使用typedef?其实没关系...类型是相同的。

09-06 19:25