代碼如下:
#include
#include
using namespace std;
class A
{
public:
string name;
A (string);
};
class B : public A
{
public:
B ();
};
A::A (string name = "")
{
this->name = name;
}
B::B ()
{
;
}
int main()
{
B b;
return 0;
}
在vs2010沒有任何問題,但在vc6.0裡就會出現錯誤,提示:“沒有A合適的構造函數”。
請問該怎麼解決呀?
【用的是公司的編譯器,我自己的當然是2010了】
在聲明時指定默認參數值,同時,把實現文件裡的默認值去掉。
另外,建議你在子類的構造函數初始化列表裡顯示調用基類的構造函數
1、
class A
{
public:
string name;
A (string);
};
改為
class A
{
public:
string name;
A (string name = "")
};
2、
A::A (string name = "")
{
this->name = name;
}
改為
A::A (string name)
{
this->name = name;
}
3、
B::B ()
{
;
}
改為
B::B () : A()
{
;
}