我是C ++的新手,我的课程有问题。
我有这个原型
class MMA7455 : public Accel
{
public:
MMA7455(uint8_t);
uint8_t accel_get_data(acceleration_t*);
private:
uint8_t accel_data_ready(void);
};
我想创建它的实例
MMA7455 accel = MMA7455(0x21);
但会显示以下消息
In function `global constructors keyed to accel':
sensors.cpp:(.text+0x8): undefined reference to `MMA7455::MMA7455(unsigned char)'
为什么要寻找'unsigned char'这个论点?即使我尝试隐式转换常量
的类型,也会显示相同的消息MMA7455 accel = MMA7455((uint8_t)0x21);
答案 0 :(得分:2)
您可能没有链接包含构造函数定义的.cpp文件。 “uint8_t”是'unsigned char'的typedef。
答案 1 :(得分:1)
您需要在程序中的某处定义MMA7455::MMA7455(uint8_t)
,即在原型中定义后添加{}
- 正文(或者您可能忘记编译并链接包含定义的cpp文件MMA7455
。
它会查找unsigned char
,因为uint8_t
恰好是您系统上typedef
的{{1}}。
答案 2 :(得分:0)
uint8_t
是您平台上unsigned char
的typedef。错误是链接器错误,因为您没有为构造函数提供实现,并且与unsigned char
的参数无关。