具有所有默认参数的显式构造函数不能从同一个类的另一个构造函数中调用

时间:2014-12-12 01:55:08

标签: c++ constructor explicit

为什么不能从同一个类的另一个构造函数中调用具有所有默认参数的显式构造函数?

 #include <iostream>
 #include <string>


 class A {
 public:
   explicit A(int a = 1, int b = 2) :
     a_(a),
     b_(b) {}

   A(std::string s)
     : A() {
       std::cout << s;
   }   

   int a_;
   int b_;
 };

 int main() {
   A a("!");
   std::cout << a.a_;
 }

g ++ -v

gcc版本4.8.2(Ubuntu 4.8.2-19ubuntu1)

g ++ -o out -std = c ++ 11 main.cpp

错误:main.cpp:12:13:错误:没有匹配函数来调用'A :: A()'

1 个答案:

答案 0 :(得分:1)

看起来像4.9.0中修复的gcc错误:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58255