错误:请求成员(也许您打算使用' - >'?),同时使用' - >'已经

时间:2013-02-19 18:53:05

标签: c++ pointers syntax compiler-errors dynamic-allocation

这个错误的含义是否容易解释?

  

错误:请求'* printerInfo'中的成员'Attributes',即   指针类型'PPRINTER_INFO_2 {aka _PRINTER_INFO_2A *}'(也许你   意思是使用' - >' ?)

PPRINTER_INFO_2* printerInfo = NULL;

    void ChangedPrinter()
    {
       ...
       DWORD attributesPrinterInfo;

       printerInfo = (PPRINTER_INFO_2*) malloc(bufferSize);

       attributesPrinterInfo = printerInfo->Attributes; // error

       free(printerInfo);
    }

我做错了什么???

2 个答案:

答案 0 :(得分:9)

PRINTER_INFO_2结构定义为:

typedef struct _PRINTER_INFO_2 {
  // ...
} PRINTER_INFO_2, *PPRINTER_INFO_2;

所以PPRINTER_INFO_2是指向PRINTER_INFO_2的指针。当你这样做

printerInfo = (PPRINTER_INFO_2*) malloc(bufferSize);

printerInfo实际上成为指向PRINTER_INFO_2指针的指针。我不确定这是出于意图还是只是一个错误,但如果它是PPRINTER_INFO_2*,那么正确使用是:

(*printerInfo)->Attributes

答案 1 :(得分:0)

对于Cpp, 看到这个https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91138

建议->在已经使用时没有帮助。正确的解决方法是建议(* pp)->成员