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

Отсутствуют экземпляры конструктора

24.12.2019, 09:07. Показов 4362. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. В ходе выполения лаб.работы столкунась с очередной проблемой. Согласно задания, нужно создать файл main.h и main.cpp. В файле main.h нужно определить с помощью ключевого слова class объект Ship, описать конструктор объекта, аргументы которого будут инициализировать все данные объекта. Описать конструктор объекта по умолчанию (без аргументов), проинициализировав все данные. Описать в объекте функцию void Print() с открытым уровнем доступа (public), которая будет выводить данные на экран.
В main.cpp определить конструктор объекта, инициализирующий все данные объекта значениями аргументов. В теле конструктора используем функцию strcpy (стр1, стр2) для копирования строки наименования корабля (с этим мне тут помогли). Затем определить функцию void SHIP::Print(). Далее создать главную функцию программы int main(). Внутри нее создать объект SHIP, указав все значения данных объекта. Вывести данные объекта на экран, вызвав функцию Print. Вот тут компилятор выдает ошибку: "отсутствуют экземпляры конструктора "Ship::Ship" соот.списку аргументов" (строка 27 файла main.cpp). Я поняла, что не может преобразовать "const char [8] " в "char*". Я пыталась вместо char использовать string, но получилось у меня еще хуже, да и в задании указан именно char.

main.h
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
using namespace std;
 
#include <iostream>
class Ship
{
private:
    char* name;
    int displacement;
    char* type;
 
public:
    Ship(char* valueName, int valueDisplacement, char* valueType) // конструктор с параметрами
    {
        name = valueName;
        displacement = valueDisplacement;
        type = valueType;
    }
 
    Ship() // конструктор по умолчанию
    {
        name = 0; 
        displacement = 0; 
        type = 0;
    }
 
    void Print() // функция вывода данных на экран
    {
        cout << "Наименование" << name << "\nВодоизмещение" << displacement << "\nТип" << type << endl;
    }
    Ship(char * valuename, int valuedisplacement, char * valuetype);
};
main.cpp

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
using namespace std;
#define _CRT_SECURE_NO_WARNINGS
 
#include <cstdlib>
#include <string>
#include <iostream>
#include "main.h"
 
 
Ship::Ship(char* valueName, int valueDisplacement, char* valueType) //конструктор с параметрами
{
    name = new char[strlen(valueName) + 1];
    strcpy(name, valueName);
    displacement = valueDisplacement;
    type =valueType;
    
};
 
void Ship:: Print() // функция вывода данных на экран
{
    cout << "Наименование" << name << "\nВодоизмещение" << displacement << "\nТип" << type << endl;
}
 
int main()
{
    setlocale(LC_ALL, "RU");
    Ship firstship("Titanic", 52310, "passenger");
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2019, 09:07
Ответы с готовыми решениями:

Отсутствуют экземпляры конструктора
есть класс class Sprite : public Renderable2D { public: Sprite(float x, float y, float width, float height,...

Отсутствуют экземпляры конструктора
#include &lt;string&gt; using std::string; class GradeBook { private: string Coursename; string Name; public: GradeBook...

Отсутствуют экземпляры конструктора
string CreatingaStream(int US,user player,user player2){ int z = 0; string word; getline(cin, word); z++; Sleep(50); ...

9
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
24.12.2019, 09:17
Ann1984, зачем у вас 30-я строка в заголовочном файле написана? Зачем у вас в этом же заголовочном файле присутствуют строки с 13 по 16, при условии, что определение этого конструктора у вас есть в main.cpp? Тот же вопрос для функции Print. Ответьте для себя на эти вопросы и проблему решите сами.
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 87
24.12.2019, 09:28  [ТС]
DrOffset, откуда в main.h появилась 30 строка и для меня загадка. Наверно так неаккуратно вставила сюда файл. Проверила VS, в проекте ее нет. А по поводу второго вопроса, у меня в задании нужно было в .h описать конструктор, аргументы которого будут инициализировать все данные объекта. Я поняла, что это нужно делать так.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
24.12.2019, 09:33
Цитата Сообщение от Ann1984 Посмотреть сообщение
описать конструктор объекта,
Вот 30-я строка у вас в h-файле - это как раз и есть описание (объявление). А то, что в 12-16 - это описание (объявление)+определение. У вас по заданию определение должно быть отдельно, в main.cpp. Вас же наверняка насторожило, что вам пришлось писать инициализацию полей два раза?
0
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 87
24.12.2019, 10:11  [ТС]
DrOffset , получается, что определение, которое содержится в .h на строках 14-16 следует убрать?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
24.12.2019, 10:26
Цитата Сообщение от Ann1984 Посмотреть сообщение
получается, что определение, которое содержится в .h на строках 14-16 следует убрать?
Ну конечно!

В h-файле должна остаться такая строчка:
C++
1
Ship(char* valueName, int valueDisplacement, char* valueType);
А в cpp -вот это:
C++
1
2
3
4
5
6
7
Ship::Ship(char* valueName, int valueDisplacement, char* valueType) //конструктор с параметрами
{
    name = new char[strlen(valueName) + 1];
    strcpy(name, valueName);
    displacement = valueDisplacement;
    type =valueType;
}
Аналогично следует поступить с функцией Print.
1
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 87
24.12.2019, 15:09  [ТС]
DrOffset, правильно я внесла изменения в файлы?

main.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using namespace std;
 
#include <iostream>
class Ship
{
private:
    char* name;
    int displacement;
    char* type;
 
public:
    Ship (char* valueName, int valueDisplacement, char* valueType); // конструктор с параметрами
    
    Ship () // конструктор по умолчанию
    {
        name = 0; 
        displacement = 0; 
        type = 0;
    }
 
    void Print(); // функция вывода данных на экран
    
};
main.cpp
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
using namespace std;
#define _CRT_SECURE_NO_WARNINGS
 
#include <cstdlib>
#include <string>
#include <iostream>
#include "main.h"
 
 
Ship::Ship(char* valueName, int valueDisplacement, char* valueType) //конструктор с параметрами
{
    name = new char[strlen(valueName) + 1];
    strcpy(name, valueName);
    displacement = valueDisplacement;
    type =valueType;
    
};
 
void Ship:: Print() // функция вывода данных на экран
{
    cout << "Наименование" << name << "\nВодоизмещение" << displacement << "\nТип" << type << endl;
}
 
int main()
{
    setlocale(LC_ALL, "RU");
    Ship firstship("Titanic", 52310, "passenger");
}
Ошибка про отсутствие экземпляров конструктора у меня так и осталась, ругается на 27 строчку в .cpp. Может я не все исправила?
0
24.12.2019, 15:36

Не по теме:

не заметил инклуд

0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
24.12.2019, 15:40
Цитата Сообщение от Ann1984 Посмотреть сообщение
Ship firstship("Titanic", 52310, "passenger");
для таких фактических параметров тип 1 и 3 формального параметра должен быть const char*
1
0 / 0 / 0
Регистрация: 09.10.2018
Сообщений: 87
24.12.2019, 15:51  [ТС]
ReYalp, я сделала include в файле .срр на строке 7.

Добавлено через 10 минут
для таких фактических параметров тип 1 и 3 формального параметра должен быть const char*
zayats80888, спасибо большое , помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.12.2019, 15:51
Помогаю со студенческими работами здесь

Отсутствуют экземпляры конструктора
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class zanyatia { private: const char...

Отсутствуют экземпляры конструктора
Добрый день, по условию &quot;b) Создать иерархии наследования: автомобиль - легковой автомобиль, грузовой автомобиль – внедорожник.&quot; я...

Отсутствуют экземпляры конструктора
Компилятор ругается: Отсутствуют экземпляры конструктора &quot;COF::COF&quot;, соответствующие списку аргументов, строка 44 Помогите исправить) ...

Отсутствуют экземпляры конструктора
Иншалла, парни! Решаю вот такое задание: Реализуйте абстрактный класс Expression с чисто виртуальными методами Expression* diff(); и...

Отсутствуют экземпляры конструктора Е0289
Всем здравствуйте. Пишу свою первую работу. Выдает ошибку Е0289 на строчках 42 и 47. Может кто подскажет, что я делаю не так. Прописываю...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru