Class构造函数中的类型转换不正确

时间:2011-06-05 09:12:05

标签: c++ class casting

我是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);

3 个答案:

答案 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的参数无关。