Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 42

Ошибка в списке аргументов конструктора

05.02.2020, 17:50. Показов 1528. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, пишу программу по строкам с помощью классов. И вот выдаёт такую непонятню ошибку:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
#include "tstring_e.h"
 
using namespace std;
 
void main()
{
    TString s1, s2("строка 2"), s3(s2); // no instance of constructor "TString::TString" matches the argument list    
        setlocale(LC_ALL, "Russian");
    cout << "Примеры использования класса TString" << endl;
    s3 = s3;
    s1.Set("строка 1");
    //  s2.Set("строка 2");
    cout << s1 << endl;
    cout << s2 << endl;
    cout << s3 << endl;
    ShowString("строка 3");
    cout << endl;
    s3 = s1;
    cout << s1 << endl;
    cout << s3 << endl;
    s1.Set("строка 11");
    cout << s1 << endl;
    cout << s3 << endl;
    s2 = "строка 21";
    cout << s2 << endl;
    cout << "Печать строки = " << s1 << endl;
    //  TString s4 = s1 + " " + s2 + " " + s3;
    s1 = s3 + s2;
    cout << s1 << endl;
    TString s4 = s1 + "###" + s2;
    cout << s4 << endl;
    s4 = "";
    s4 = s4 + "пример" + " " + "строки";
    cout << s4 << endl;
}
Переводится как "ни один экземпляр конструктора "TString :: TString" не соответствует списку аргументов". Объясните, пожалуйста, что это значит и как можно исправить?

Вот tstring_e.h, если нужен
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef __TSTRING_H__
#define __TSTRING_H__
 
#include <iostream>
 
using namespace std;
 
class TString
{
private:
    char *pMem; // память для хранения строки
    int   Size; // размер памяти
    int   Len;  // длина хранимой строки
 
    void Copy(char *str);              // копирование строки в объект
public:
    TString(int MemSize = 255);        // конструктор - только выделение памяти
    TString(const TString &ps);        // конструктор копирования
    TString(char *str);                // конструктор преобразования типа
    ~TString(void);                    // деструктор - освобождение памяти
    void Set(char *str);               // запись строки в объект
    int GetLength() { return Len; }    // количество символов
    int operator==(const TString &ps); // сравнение
    int operator< (const TString &ps); // меньше
    int operator> (const TString &ps); // больше
 
    TString& operator=(const TString &ps);          // перегрузка присваивания
    char& operator[](int pos) { return pMem[pos]; } // доступ к символу
 
    // перегрузка операции сложения
    friend TString operator+(const TString &ps1, const TString &ps2);
    // перегрузка операции вывода
    friend ostream& operator<<(ostream &os, const TString &ps);
};
 
void ShowString(const TString & ps);
 
#endif
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2020, 17:50
Ответы с готовыми решениями:

Потоки. Ошибка отсутствуют экземпляры конструктора, соответствующие списку аргументов
void Engine::run() { long startTime; long timeMillis; long waitTime; long totalTime = 0; int frameCount = 0; ...

Ошибка компиляции "Отсутствуют экземпляры конструктора соответствующие списку аргументов"
не компилируется, #include &lt;iostream&gt; #include &lt;locale&gt; using namespace std; class Distance { private: int feet; float...

Как узнать количество аргументов конструктора?
Добрый день. Как на этапе компиляции узнать, сколько аргументов имеет конструктор некоторого класса? Нужно в шаблонной функции по...

15
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:07
---
1
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 42
05.02.2020, 18:11  [ТС]
_stanislav, а разве не оспользуется стандартный конструктор для строк?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:13
e7min, вроде все нормально.
Цитата Сообщение от e7min Посмотреть сообщение
Объясните, пожалуйста, что это значит и как можно исправить?
все работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef __TSTRING_H__
#define __TSTRING_H__
 
#include <iostream>
 
using namespace std;
 
class TString
{
public:
    TString(int MemSize = 255) {};        // конструктор - только выделение памяти
    TString(const TString &ps) {};        // конструктор копирования
    TString(char *str) {};                // конструктор преобразования типа
    ~TString(void) {};                    // деструктор - освобождение памяти
};
 
#endif
 
int main()
{
    TString s1, s2(""), s3(s2);
    return 0;
}
1
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 42
05.02.2020, 18:15  [ТС]
_stanislav, я почитал про эти конструкторы на mdsn, после этого поменял вот так:
C++ (Qt)
1
TString s1, s2("строка 2", 256), s3(s2);
Теперь эта ошибку пропала, но осталось ещё 8

Добавлено через 2 минуты
_stanislav, странно, у меня не работает, выдаёт в том же месте такую же ошибку
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:17
Цитата Сообщение от e7min Посмотреть сообщение
s2("строка 2", 256)
у тебя нет такого конструктора.

Добавлено через 47 секунд
Цитата Сообщение от e7min Посмотреть сообщение
странно, у меня не работает, выдаёт в том же месте такую же ошибку
опять магия

Добавлено через 33 секунды
e7min, кидай весь код
1
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 42
05.02.2020, 18:21  [ТС]
_stanislav, кроме того, что скинул есть ещё один файл с реализацией методов:

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#define _CRT_SECURE_NO_WARNINGS
 
#include <string>
#include "tstring_e.h"
 
TString::TString(int MemSize) // конструктор - только выделение памяти
{
    Size = MemSize;
    pMem = new char[Size];
    Len = 0;
    *pMem = '\0';
} /*-------------------------------------------------------------------------*/
 
TString::TString(const TString &ps) // конструктор копирования
{
    pMem = NULL;
    Copy(ps.pMem);                    // создание копии объекта ps
} /*-------------------------------------------------------------------------*/
 
TString::TString(char *str) // конструктор преобразования типа
{
    pMem = NULL;
    Copy(str);                // создание объекта по строке C
} /*-------------------------------------------------------------------------*/
 
/TString::~TString(void) // деструктор - освобождение памяти
{
    delete[] pMem;
    Size = Len = 0;
    pMem = NULL;
    //  printf("Destructor - %s\n", s);
} /*-------------------------------------------------------------------------*/
 
void TString::Copy(char *str) // копирование строки в объект
{
    delete[] pMem;
    int ms = strlen(str) + 1;
    pMem = new char[ms];
    Size = ms;
    Set(str);
} /*-------------------------------------------------------------------------*/
 
void TString::Set(char * str) // запись строки в объект
{
    int ms = strlen(str);       // если длина str больше размера памяти,
    if (ms >= Size)
        ms = Size - 1;            // переписывается только часть строки
    for (int i = 0; i < ms; i++)
        pMem[i] = str[i];
    pMem[ms] = '\0';
    Len = ms;
} /*-------------------------------------------------------------------------*/
 
int TString::operator==(const TString &ps) // сравнение
{
    return strcmp(pMem, ps.pMem) == 0;
} /*-------------------------------------------------------------------------*/
 
int TString::operator< (const TString &ps) // меньше
{
    return strcmp(pMem, ps.pMem) < 0;
} /*-------------------------------------------------------------------------*/
 
int TString::operator> (const TString &ps) // больше
{
    return strcmp(pMem, ps.pMem) > 0;
} /*-------------------------------------------------------------------------*/
 
// перегрузка операции присваивания
TString& TString::operator=(const TString &ps)
{
    if (this == &ps) // защита от присваивания объекта самому себе
        return *this;
    Copy(ps.pMem);
    return *this;
} /*-------------------------------------------------------------------------*/
 
// перегрузка операции сложения - реализация в виде дружественной функции
TString operator+(const TString &ps1, const TString &ps2)
{
    int ms;
    TString ps(ms = ps1.Len + ps2.Len + 1);
    //ps.Size = ms;
    ps.Len = ms - 1;
    strcpy(ps.pMem, ps1.pMem);
    strcpy(ps.pMem + ps1.Len, ps2.pMem);
    return ps;
} /*-------------------------------------------------------------------------*/
 
// перегрузка операции вывода для объектов типа TString
ostream& operator<<(ostream &os, const TString &ps)
{
    os << ps.pMem;
    return os;
} /*-------------------------------------------------------------------------*/
 
// пример обычной функции с параметром типа TString
void ShowString(const TString & ps)
{
    cout << ps;
} /*-------------------------------------------------------------------------*/
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:25
Цитата Сообщение от e7min Посмотреть сообщение
/TString::~TString(void) // деструктор - освобождение памяти
тут
1
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 42
05.02.2020, 18:26  [ТС]
_stanislav, Это я убрал уже

Добавлено через 10 секунд
в смысле лишний /
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:33
Цитата Сообщение от e7min Посмотреть сообщение
в смысле лишний /
у меня весь код который ты скинул собрался
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:34
доказательство:
Миниатюры
Ошибка в списке аргументов конструктора  
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:35
Цитата Сообщение от e7min Посмотреть сообщение
в смысле лишний /
а void убрал?
1
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 42
05.02.2020, 18:37  [ТС]
_stanislav, вот и у меня на другом копме тоже всё работало, пришёл домой и появились откуда-то эти ошибки. Ничего не понимаю...

Добавлено через 1 минуту
_stanislav, да, без него всё то же самое
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:38
Цитата Сообщение от e7min Посмотреть сообщение
да, без него всё то же самое
проект пересоздай.
1
0 / 0 / 0
Регистрация: 16.01.2019
Сообщений: 42
05.02.2020, 18:44  [ТС]
_stanislav, сейчас попробую, спасибо за помощь

Добавлено через 5 минут
_stanislav, теперь в той же строке такая ошибка: 'TString::TString(const TString &)': cannot convert argument 1 from 'const char [9]' to 'int'
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 18:57
Лучший ответ Сообщение было отмечено e7min как решение

Решение

e7min, суть такая, если у меня все собралось, значит дело не в коде, так что на код смотреть бесполезно.

Добавлено через 52 секунды
ты проект создай с тем кодом который ты сюда выложил, не добавляй ничего.

Добавлено через 4 минуты
а вообще, если такие не понятные ошибки появляются, я иду с малого, сначала объявлю класс с минимальным функциями что бы работало, потом добавляю потихоньку пока ошибка не проявиться.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2020, 18:57
Помогаю со студенческими работами здесь

Изменение параметров конструктора без аргументов
Как в конструкторе без параметров изменить значения из функции main?

Неправильная передача аргументов конструктора класса
Есть несколько конструкторов: student(char* name, char* group, int course, int marks){ strcpy(FIO, name); strcpy(this-&gt;group,...

Ошибка в запросе: ">" не распознан в списке аргументов функции
&quot;Ошибка в списке аргументов функции: &quot;&gt;&quot; не распознан.&quot; Как это исправить? SELECT FIO, Dolzhnost, IIF(DateAdd('yyyy', - 6, NOW())...

Конвертирование данных в запросе: Ошибка в списке аргументов функции: "using" не распознан
Здравствуйте. Столкнулся с проблемой при вытягивании + расшифровке данных из БД в одном запросе. SQL запросы отрабатывают нормально. ...

Три конструктора с разным количеством аргументов, какой использовать?
В 1-ом классе 3 конструктора, которые имеют разное кол-во аргументов(3 арг, 6 и 11). Теперь во 2-ом классе создан объект из 1-го, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru