在c++中创建了类,但在创建新对象时,编译显示:不存在默认构造函数

代码如下:
问题出现在主函数第二行 Stock mystock;
头文件:
class Stock
{
private: char* Symbol;
double price;
public:
Stock(char[] );
~Stock(void);
void set_value(double);
double get_value();
};

cpp文件:
Stock::Stock(char c[])
{
Symbol = c;
}
Stock::~Stock(void)
{
cout << "Stock" << Symbol << "is dying!" << endl;
}
void Stock::set_value(double x){
price = x;
}
double Stock::get_value(){
return price;
}

主函数:
int _tmain(int argc, _TCHAR* argv[])
{
Stock mystock;
mystock.set_value(3);
cout << mystock.get_value() << endl;
return 0;
}

谢谢编程大神们

在c++中,如果你没有自定义构造函数,那么系统会给你的类提供一个默认的无参数的构造函数,你现在已经自定义了一个有参数的构造函数:Stock(char[] );
有两种解决办法:
一:你再显式定义一个无参数的构造函数,比如
Stock::Stock()
{
Symbol = "默认股票名";

price = 0.0;

}

二、你按照正确的格式使用你自定义的构造函数,即 Stock(char[]) (要带一个字符串参数):

主函数中的 Stock mystock;
改为 Stock mystock("我的股票");
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-25
如果你没有自定义构造函数在C + +中系统会给你的类提供了一个默认的无参数的构造函数,你现在已经是一个有参数的构造函数的定义:股票(的char []);
有两种解决方案:
:明确地定义一个无参数的构造函数,如
库存::股票()
{
符号,默认股票名称“

价格= 0.0;

}

其次,你按照正确的格式,使用您的自定义构造函数,股票(CHAR [])(把一个字符串参数):

联合mystock主要功能;
改变到股票mystock(股票);
第2个回答  2013-02-22
如果你没有自定义构造函数在C + +中系统会给你的类提供了一个默认的无参数的构造函数,你现在已经是一个有参数的构造函数的定义:股票(的char []);
有两种解决方案:
:明确地定义一个无参数的构造函数,如
库存::股票()
{
符号,默认股票名称“

价格= 0.0;

}

其次,你按照正确的格式,使用您的自定义构造函数,股票(CHAR [])(把一个字符串参数):

联合mystock主要功能;
改变到股票mystock(股票);
第3个回答  2013-02-21
很明显你的构造函数有个参数,可是你构造对象时没有参数,他去找那个没有参数的构造函数,发现找不到
第4个回答  2013-02-21
创建对象时,用的是无参的构造函数,但是程序中没有,需要定义一个无参的构造函数,或者是使用有参的构造函数创建对象。
相似回答