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: 没有合适的默认构造函数可用的主要内容,如果未能解决你的问题,请参考以下文章