error C2512: 没有合适的默认构造函数可用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error C2512: 没有合适的默认构造函数可用相关的知识,希望对你有一定的参考价值。

下面这段代码运行会出错,说是error C2512: “pc::pc”: 没有合适的默认构造函数可用。求改正,我用的VS2010

#include "stdafx.h"
#include <string>
#include <map>
using namespace std;
struct node

string data;
node *next;
;
class pc

public:
node *p;
pc(string x)

p=new node;
p->data=x;
;
;
map<string,class pc> obj;
void main()

pc C("C");
pc D("D");
obj["C"] = C;
obj["D"] = D;

你需实现拷贝构造和 重载赋值运算符
pc::pc(const pc& rSrc)

map<string,class pc> obj; obj["C"] 不知道会不会会初始个对象,自己测测,看看给需要默认无参构造

不应该是 ""当成CHAR*吧?强制转换下
参考技术A 添加pc类的默认构造函数
class pc

......
pc()
p = NULL;


....
;本回答被提问者采纳

这个错误是啥:“没有合适的默认构造函数可用”?

【中文标题】这个错误是啥:“没有合适的默认构造函数可用”?【英文标题】:What is this error: "no appropriate default constructor available"?这个错误是什么:“没有合适的默认构造函数可用”? 【发布时间】:2012-07-09 00:45:02 【问题描述】:

我得到:

main.cpp(13): 错误 C2512: 'myPlayer' : 没有合适的默认值 构造函数可用

这是它所指的代码:

    myPlayer player;

这里是构造函数:

myPlayer (int myHealth, int myDamage, int myMoney, int myWeaponID, int myClass) : health(myHealth), damage(myDamage), money(myMoney),
    weapon_id(myWeaponID), p_class(myClass) 

另外,如何在 Visual Studio 11 上显示每一行的数字?

【问题讨论】:

你有那个类的默认构造函数(一个没有参数的)吗?如果没有,则需要声明一个。 【参考方案1】:

您的构造函数被声明为采用 5 个参数,所有类型均为 int。您没有提供任何参数。

您的选择是编写不需要参数的构造函数,或者在构造对象时提供参数,例如:myPlayer player(1, 2, 3, 4, 5);

【讨论】:

选项3:给所有参数默认值。选项 4 (C++11):对所有成员使用类内成员初始值设定项。现在我已经提供了一些东西,因为我的老师非常具体,所以您的第一段应该以参数结尾,因为它们是您赋予函数的内容。 @chris:您的选项 3 实际上是选项 1——提供默认值只是在创建对象时消除参数要求的一种方法。选项 4 也几乎相同——另一种机制可以消除构造对象时传递参数的要求。 相同的想法,是的,但不同的方法。根据具体情况,一个人可能比其他人更适合。

以上是关于error C2512: 没有合适的默认构造函数可用的主要内容,如果未能解决你的问题,请参考以下文章

错误 C2512:没有合适的默认构造函数可用(不是类)

错误 C2512 没有合适的默认构造函数,即使我有一个?

错误 C2512 但我有可用的默认构造函数

复制构造函数没有合适的默认构造函数

错误 C2512:没有适当的默认构造函数可用 - 为啥在构造函数中初始化属性?

使用模板时缺少默认构造函数