我正在使用C++模板来访问内存保存首选项。内存由句柄引用。为了锁定/解锁这个内存,我编写了一个类似auto_ptr的类模板。当我不想访问其中一个成员时,编译器会发出一个'unidentified‘错误。
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->值更改为零。
发布于 2019-10-21 03:40:13
这应该能起到作用:
(*p)->value您的p只是一个指针,您需要首先取消对它的引用,以便可以使用您的类operator->
注意--如果你想跳过解引用部分,你需要按值复制Prefs并使用它而不使用指针符号(如Prefs p)。请注意,您通常编写auto_ptr<foobar> baz而不是auto_ptr<foobar> * baz
https://stackoverflow.com/questions/58476613
复制相似问题