首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在使用auto_ptr样式类访问结构成员时会得到一个“未识别的标识符”?

为什么我在使用auto_ptr样式类访问结构成员时会得到一个“未识别的标识符”?
EN

Stack Overflow用户
提问于 2019-10-21 03:37:01
回答 1查看 57关注 0票数 0

我正在使用C++模板来访问内存保存首选项。内存由句柄引用。为了锁定/解锁这个内存,我编写了一个类似auto_ptr的类模板。当我不想访问其中一个成员时,编译器会发出一个'unidentified‘错误。

代码语言:javascript
复制
typedef struct
{
    int value   ;

} PREFS ;

template <class T>
class PluginMem
{
    private :

    T       *ptr    ;

    public :

    T *
    operator ->
    (
    )
    {
        return( ptr ) ;
    }
} ;

typedef PluginMem<PREFS>    Prefs   ;

class   PluginContext
{
    public :

    template <class T>
    T *
    getNamedPreferences
    (
        const char  *prefsname
    ) ;

} ;

static void
test()
{
    PluginContext   ctx ;
    Prefs       *p  ;

    p = ctx.getNamedPreferences<Prefs>( "test" ) ;

    /*
     *  unidentified identifier 'value'
     */
    p->value = 0 ;
}

我希望能够在这里将p->值更改为零。

EN

回答 1

Stack Overflow用户

发布于 2019-10-21 03:40:13

这应该能起到作用:

代码语言:javascript
复制
(*p)->value

您的p只是一个指针,您需要首先取消对它的引用,以便可以使用您的类operator->

注意--如果你想跳过解引用部分,你需要按值复制Prefs并使用它而不使用指针符号(如Prefs p)。请注意,您通常编写auto_ptr<foobar> baz而不是auto_ptr<foobar> * baz

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58476613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档