我试过这个:
int n;
cin >> n;
int * pn = new int[n];
然后我可以使用这个数组:pn [i] = ...
但我想在自己的课堂上组织一些类似的事情:
class MyString
{
char* m_pStr;
public:
MyString(const char* pStr){
this->CreateArray(pStr);
strcpy(m_pStr, pStr);
}
}
void main(){
int N;
cout << "Iinput N: ";
cin >> N;
MyString * ar = new MyString[N];
char tmp[100];
for (int i = 0; i < 4; i++){
cout <<"Input the string for the Mystring " << i + 1 << " ";
cin >> tmp;
ar[i] = MyString(tmp);
}
}
我得到:错误C2512:'MyString':没有合适的默认构造函数。
答案 0 :(得分:0)
您正尝试使用默认构造函数实例化MyString
类,而没有在此行中定义一个:
MyString * ar = new MyString[N];
它必须初始化对象,因此将尝试使用未设置的默认构造函数。
我个人会改变你的构造函数:
MyString(const char* pStr);
为:
MyString(const char* pStr = "");
以便像默认一样行事。
答案 1 :(得分:0)
您忘记包含默认构造函数!
MyString() : m_pStr(0) { }
当您尝试从此处实例化MyStrings数组时发生错误:
MyString * ar = new MyString[N];
查找默认构造函数。由于您没有在类定义中定义一个,因此您收到了所描述的错误。
因此,要解决您的问题,请为您的类创建默认构造函数,并且所有内容都应该按原样进行编译。
有关更多详细信息,请参阅此链接(或阅读某些C ++):