Я пытаюсь запустить код, который определяет объекты, которые представляют собой набор английских букв.
Я не знаю, почему он не компилируется.
I have tried to change from int to const int but it is not the case,
, а также добавил сообщение об отключении 4996, но это не помогло.
#include <iostream>
using namespace std;
class CharSet
{
int size;
char* pSet;
public:
// -----------------------------------
CharSet(int const size, char* set)
{
this->size = size;
pSet = new char[strlen(set) + 1];
strcpy(pSet, set);
}
// -----------------------------------
~CharSet()
{
delete[] pSet;
}
// -----------------------------------
CharSet operator*(const CharSet & other)
{
int maxSize = 0;
if (this->size >= other.size)
maxSize = this->size;
else
maxSize = other.size;
char * ret = new char[maxSize + 1];
char temp;
int index = 0;
for (int i = 0; i < this->size; i++)
{
temp = this->pSet[i];
for (int j = 0; j < other.size; j++)
{
if (other.pSet[j] == temp)
{
ret[index] = temp;
index++;
}
}
}
ret[index] = '\0';
return CharSet(maxSize, ret);
}
// -----------------------------------
bool operator()(char check)
{
bool flag = false;
for (int i = 0; i < this->size; i++)
{
if (pSet[i] == check)
flag = true;
}
return flag;
}
// -----------------------------------
friend ostream& operator<<(ostream& os, const CharSet& s)
{
os << s.pSet;
return os;
}
// -----------------------------------
};
int main()
{
CharSet s1(4, "DAQP"), s2(3, "AXZ");
cout << s1 * s2 << endl;
if (s1('Q') == true)
cout << "The element is member of the set" << endl;
else
cout << "The element is not member of the set" << endl;
return 0;
}
ошибок:
- E0289 ни один экземпляр конструктора "CharSet :: CharSet" не соответствует аргументу
- E0289 ни один экземпляр конструктора "CharSet :: CharSet" не соответствует списку аргументов
- C4996 'strcpy': эта функция или переменная может быть небезопасной. Попробуйте вместо этого использовать strcpy_s. Чтобы отключить устаревание, используйте _CRT_SECURE_NO_WARNINGS. Смотрите справку для деталей.
- C2664 'CharSet :: CharSet (const CharSet &)': невозможно преобразовать аргумент 2 из
- C2664 'CharSet :: CharSet (const CharSet &)': невозможно преобразовать аргумент 2 из 'const char [4]' в 'char *'