放置类构造函数

djk*_*h11 5 c++ constructor c++11

为什么这段代码不正确?

class Method
{
public:
   Method(decltype(info2) info1);
   virtual ~Method(){}
protected:
  QSharedPointer<info> info2;
};
Run Code Online (Sandbox Code Playgroud)

但是这段代码是正确的:

class Method
{
public:
   virtual ~Method(){}
protected:
  QSharedPointer<info> info2;
public:
  Method(decltype(info2) info1);   
};
Run Code Online (Sandbox Code Playgroud)

为什么类构造函数的位置很重要?我认为定义类构造函数的位置并不重要.

小智 0

QSharedPointer info2的位置;

很重要。'info2' 应在将其用于 decltype 之前定义(http://en.cppreference.com/w/cpp/language/decltype)。

接下来也不起作用:

void f() {
    d();
}

void d() {
}
Run Code Online (Sandbox Code Playgroud)