将模板化T定义为指针

 祖巧爽_940 发布于 2023-01-20 11:18

我想使用此代码定义一些通用指针(?但不是void指针):

class A
{

template
using ptr = T*;

using ubyte = uint8_t;

public:

    const ptr
    getColor1() const {
        return &colors[0];
    }

    const ubyte*
    getColor2() const {
        return &colors[0];
    }


private:

    ubyte colors[4];
};

但是,getColor1()不会编译.这两个功能有什么区别?

gcc说:

error: invalid conversion from 'const ubyte* {aka const unsigned char*}' to 'A::ptr {aka unsigned char*}' [-fpermissive]|

更新:

删除的答案说我可以这样做:

//option 1
template
using const_ptr = const T*;

要么

//option 2
const ptr
getColor()  //remove cv-qualifier
{
    return &colors[0];
}

来自option1,

它构建到现在const const,const const意味着什么?

来自option2,

为什么只删除cv-qualifier使这个编译?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有