相关疑难解决方法(0)

最烦恼的解析

我从这里得到了代码.

class Timer {
 public:
  Timer();
};

class TimeKeeper {
 public:
  TimeKeeper(const Timer& t);

  int get_time()
  {
      return 1;
  }
};

int main() {
  TimeKeeper time_keeper(Timer());
  return time_keeper.get_time();
}
Run Code Online (Sandbox Code Playgroud)

从它的外观来看,由于该行应该会出现编译错误:

TimeKeeper time_keeper(Timer());
Run Code Online (Sandbox Code Playgroud)

但只有在return time_keeper.get_time();存在的情况下才会发生 .

为什么这条线甚至很重要,编译器会发现time_keeper(Timer() )构造上的含糊不清.

c++ most-vexing-parse

27
推荐指数
1
解决办法
2436
查看次数

函数调用操作符重载的参数太多

我试图重载() operator接受a long,代码在下面.

struct print{
    void operator()(long x){
        printf("Number: %d\n",x);
    }
};
Run Code Online (Sandbox Code Playgroud)

但是,当我这样写:

print p();
long l = 10;
p(l);
Run Code Online (Sandbox Code Playgroud)

编译器在对应的行上大喊"错误:函数调用中的参数太多" p(l);

为什么这不起作用,我() operator是否正确超载?

c++ syntax struct functor

0
推荐指数
1
解决办法
3776
查看次数

标签 统计

c++ ×2

functor ×1

most-vexing-parse ×1

struct ×1

syntax ×1