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

Обновлено: 16.05.2024

В этом уроке мы достаточно поверхностно рассмотрим указатель this , чтобы начинающие программисты познакомились с ним и имели представление о том где он встречается и как работает. Хочу, для начала, рассмотреть пару несложных примеров.

В первом будут определены функции: одна из которых будет записывать данные в переменные, а вторая – отображать их на экран. Во втором примере определим класс, который будет содержать два метода, выполняющих такую же работу, как и функции из первого примера.

Когда будете рассматривать эти примеры, обратите внимание на то, как функции из первого примера и методы класса из второго примера, будут принимать параметры.

В этом примере вы, скорей всего, не увидели ничего нового и сложного для вас. Все просто – функции лишь принимают параметры и выполняют определённые действия с этими параметрами. Теперь напишем простой класс, в котором реализуем методы очень похожие на функции из первого примера. Но кое-чем они будут отличаться. А именно тем, что им не надо принимать в виде параметров, члены класса, чтобы внести изменения в них.

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

Как же методы “понимают”, с какими данными и с каким объектом класса им надо работать? Дело в том, что в методы класса, неявно передается в виде параметра указатель this (указатель на объект класса). Происходит это автоматически. Мы этого не видим, так как этот указатель – есть скрытый первый параметр любого метода класса.

Указатель this хранит адрес определённого объекта класса. В рассмотренном примере он хранит адрес объекта objectOfClass . Таким образом он неявно указывает методам класса с данными какого объекта надо работать.

Отмечу, что у программистов все же есть возможность применять указатель this явно. Если бы мы определяли метод enterData() с явным использованием this , это выглядело бы так:

указатель this в c++, this c++, this с++

указатель this в c++, this c++, this с++

Конкретно в этих случаях можно обойтись и без явного использования this . Но иногда явного использования не избежать. К примеру в следующем примере, this не позволит компилятору запутаться в именах членов класса и параметров которые принимает конструктор.

Иншалла, парни! Решаю вот такое задание:
Реализуйте абстрактный класс Expression с чисто виртуальными методами Expression* diff(); и void print(); и отнаследуйте от него классы Number, Variable, Add и Sub число, переменная, сумма двух выражений и разность двух выражений, для которых напишите реализацию этих двух методов;
Пример:

но компилятор выдает ошибку: в строке 22"E0289 отсутствуют экземпляры конструктора "Add::Add", соответствующие списку аргументов типы аргументов: (Expression *, Expression *)"
Чё делать? надо чтобы этот ̶к̶а̶л̶ код заработал

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

IslamAlahovich, напишите для класса Add конструктор, принимающий параметрами два указателя на экземпляры этого же класса, и будет Вам счастье.

и
ОПЯТЬ ОШИБКА:"C4716 Expression::diff: должна возвращать значение" То есть когда я вызываю e->diff() он идет не в Add::diff()(что логично, если я создаю объект типа Add от родителя Expression) а в Expression::diff(). Дайте костыль кто нибудь или объясните как это работает,
Иншалла

В базовом классе метод diff у Вас должен возвращать значение типа Expression* и где это в приведенном коде?
Разумно этот класс сделать абстрактным:

В первом случае код функции есть (хотя и пустой), во втором кода нет и экземпляр класса создать нельзя,
можно только объявить указатель на него.

zss, спасибо огромное. Если я сам правильно понял условие, задача заключается в построении абстрактного класса "Выражение", которое имеет методы "дифференцирование" и "вывод выражения на экран", и производных классов Число(diff() должен вернуть 0), Переменная(diff() должен веруть 1), Сумма(diff() должен вызывать diff() для каждого слагаемого) при этом diff() возвращает не просто значение, а создает новый объект со значением и возвращает ссылку, ну а сама формулировка и пример функции main() в шапке

Добавлено через 43 минуты
Всё код работает

Только по правилам С++ определение такой функции (чистовиртуальной) нельзя совмещать с объявлением.

Учу С++ по Дейтлу и при выполнении домашнего задания столкнулся с такой ошибкой. Подскажите пожалуйста где натупил.

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

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

KChernenko, у тебя конструктор GradeBook (string, string); с двумя параметрами, а ты вызываешь конструктор с одним параметром, которого нет.

KChernenko, у тебя конструктор GradeBook (string, string); с двумя параметрами, а ты вызываешь конструктор с одним параметром, которого нет.

Я извиняюсь, но ничего не понял, что Вы написали.

В описании класса я объявляю конструктор

указывая, что буду работать с двумя переменными типа string. Уже в самом конструкторе я создаю эти две переменные типа string

вы создаёте два объекта. С именами course и name. Это не поля объекта GradeBook. Два объекта. Типа GradeBook. И вы передаёте один параметр. А конструктор требует два.

вы создаёте два объекта. С именами course и name. Это не поля объекта GradeBook. Два объекта. Типа GradeBook. И вы передаёте один параметр. А конструктор требует два.


LU разложение - отсутствуют экземпляры конструктора
Добрый день. Помогите пожалуйста разобраться с кодом. Код, реализует LU разложение матрицы: .


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

Вставка в map и ошибка "Отсутствуют экземпляры конструктора"
Подчёркивает map в 3тей строчке и пишет ошибку 1 IntelliSense: отсутствуют экземпляры.

Репутация: нет
Всего: нет

выдает ошибку "отсутствуют экземпляры конструктора , соответствующие списку аргументов"

Код

class Myclass: public MyClass2

Код

MyClass:MyClass( const string & a, const string & b, const string & v, const string & tmp) :MyClass2( a_t, b_t, v_t, tmp_t)

Код

class MyClass2
public:

Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) :( a_t(a), b_t(b), v_t(v), tmp_t(tmp))

Репутация: 35
Всего: 223

Что такое a_t, b_t, v_t, tmp_t ? Они нигде в ваших сорцах не упоминаются.

PS. Последний кусок:

Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) :( a_t(a), b_t(b), v_t(v), tmp_t(tmp))
Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) : a_t(a), b_t(b), v_t(v), tmp_t(tmp)

Репутация: нет
Всего: нет

Цитата(xvr @ 25.12.2018, 20:01)
Что такое a_t, b_t, v_t, tmp_t ? Они нигде в ваших сорцах не упоминаются.

PS. Последний кусок:

Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) :( a_t(a), b_t(b), v_t(v), tmp_t(tmp))
Код

MyClass2:MyClass2( const string & a, const string & b, const string & v, const string & tmp) : a_t(a), b_t(b), v_t(v), tmp_t(tmp)

std::string a_t;
std::string b_t;
std::string v_t;
std::string tmp_t;

Репутация: 35
Всего: 223

Где они находятся? В MyClass, MyClass2 или вообще среди глобалов?

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.


0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »

[ Время генерации скрипта: 0.1310 ] [ Использовано запросов: 21 ] [ GZIP включён ]

, Я получаю ошибки, говоря: "'CycleEvent.CharityCyclists "не содержит конструктора, который принимает 0 аргументов", он говорит, что ошибка связана с этой частью кода:

вот мой класс CharityCyclists:

вот ведь CharityCyclists класс не имеет конструктора, который не принимает аргументов.

Если вы хотите разрешить CharityCyclists чтобы быть построенным без параметров, добавьте этот код в класс:

когда вы предоставили конструктор для своего класса, который принимает аргументы, компилятор больше не создает пустой конструктор.

поэтому вы не можете вызвать пустой конструктор, потому что он не существует. Нужно явно написать конструктор, который принимает 0 аргументов в коде класса.

у вас нет consturctor, который не принимает никаких аргументов.

вы должны добавить

или что-то в этом роде

при создании конструктора, не содержащего 0 аргументов, автоматически удаляется значение по умолчанию конструктор. Вы должны создать новый конструктор по умолчанию (без аргументов) и что будет заботиться о проблеме.

Это только если у вас есть нет конструкторы, хотя. У тебя есть один, так что этого не случится. Вы должны явно создать конструктор, который не принимает никаких параметров.

у вас нет конструктора для этого класса, который не имеет аргументов. Единственный конструктор у вас принимает параметры. Добавьте это в свой класс:

при объявлении конструктора классы автоматически не получают конструктор по умолчанию. Вам нужно будет создать конструктор без параметров для решения проблемы или вызвать тот, который принимает параметры.

добавить это CharityCyclists класс:

вы не можете закодировать строку:

Если у вас нет этого конструктора.

вы пытаетесь создать экземпляр cyclist1 экземпляр класса CharityCyclists без каких-либо аргументы-для этого требуется конструктор без аргументов.

но определение класса CharityCyclists имеет только один конструктор с 9 аргументами. Поскольку этот конструктор требует 9 аргументов, cyclist1 не будет соответствовать этому конструктору. Вам нужен конструктор, который не принимает аргументов, как в:

Читайте также: