小编grd*_*grd的帖子

重载构造函数的C++调用是不明确的

假设我有这个虚拟类定义:

    class Node
    {
    public:
        Node ();
        Node (const int = 0);
        int getVal();
    private:
        int val;
    };
Run Code Online (Sandbox Code Playgroud)

虚拟构造函数实现仅用于教育目的:

Node::Node () : val(-1)
{
    cout << "Node:: DEFAULT CONSTRUCTOR" << endl;
}


Node::Node(const int v) : val(v) 
{
    cout << "Node:: CONV CONSTRUCTOR val=" << v << endl;
}    
Run Code Online (Sandbox Code Playgroud)

现在,如果我编译(使用选项-Wall -Weffc++ -std=c++11:),下面的代码:

#include <iostream>
#include "node.h"
using namespace std;

int main()
{   
    Node n;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误,根本不编译:

node_client.CPP: In function ‘int main()’:
node_client.CPP:10:16: error: call of …
Run Code Online (Sandbox Code Playgroud)

c++ constructor default constructor-overloading c++11

6
推荐指数
1
解决办法
5197
查看次数