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

标签 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()’

最佳答案

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

关于c++ - 不能从同一类的另一个构造函数调用具有所有默认参数的显式构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435640/

相关文章:

javascript - 使用 javascript 添加 CSS 渐变 - IE7 中的错误

implicit - J 中默认编程的优缺点

c++ - 具有不同参数的同一个纯虚函数的两个覆盖函数?

c++ - zlib 在慢速 PC 上能有多快?

java - JAVA制作存钱 jar 程序

c++ - 我实际上是在调用 ctor 并在指向对象的指针上初始化 vtable 吗? C++

c++ - 理解 C++ 中显式构造函数的问题

c++ - 为什么pthread_cond_signal会导致死锁

c++ - 封装与性能

javascript - prototype.constructor 和内置 Object() 有什么区别