C++ 未命名结构的构造函数

C++ 未命名结构的构造函数,c++,C++,我有一门课是这样的: template <class T> class bag { public: private: typedef struct{void* prev; struct{T item; unsigned int count;} body; void* next;}* node; typedef struct{ node operator->() { return current; } operator(){;} // <- i can no

我有一门课是这样的:

template <class T>
class bag
{
public:

private:
 typedef struct{void* prev; struct{T item; unsigned int count;} body; void* next;}* node; 
 typedef struct{
  node operator->() { return current; }
  operator(){;} // <- i can not do that, right?

 private:
  node current;
 } iterator;
//...
};
模板
书包
{
公众:
私人:
typedef结构{void*prev;结构{T项;无符号整数计数;}体;void*next;}*节点;
类型定义结构{
节点运算符->(){return current;}

操作符(){;}/给它取个好名字:-)


编辑:LOL抱歉,写错了,但原理是一样的:-)

无法为
bag::iterator
编写构造函数,因为iterator是一个typedef名称,禁止用作构造函数名称:

14882:2003 12.1/3

命名类的typedef名称不得用作构造函数声明的声明器中的标识符

标准中甚至有一个例子,尽管在不同的段落中,
7.1.3/5

typedef struct {
    S();         //error: requires a return type because S is
                 // an ordinary member function, not a constructor
} S;

如果您需要一个用户定义的构造函数,则必须给该结构一个名称。<代码> TyPufFrxt{{} name;< /COD>编程风格通常被C++样式指南所劝阻,而不是“代码>结构名称{};< /COD>。< /P>一个“没有命名的”结构被称为匿名。@ Peter G.:不匿名,这是一个“在typedef声明中定义的未命名类”

7.1.3/5
谢谢Cubbi,我将得到更正。
typedef struct {
    S();         //error: requires a return type because S is
                 // an ordinary member function, not a constructor
} S;