Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2016, 15:50   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Что с конструктором копирования?

Добрый день.Проблема с конструктором копирования.Не могу понять почему вылетает ошибка на следующий код:
Date.h
Код:
#pragma once
ref class Date
{
public:
  Date(void);
   Date(Date);
     double day;
     double month;
        double year;
   
         Date(double d, double m, double y);
      
        Date(Date&);
      
       ~Date() { } 
 
          virtual int CheckData();
       
 
};
Date.cpp
Код:
#include "StdAfx.h"
#include "Date.h"
 
 
    Date::Date(void)
    {
     this->day = 0;
           this-> month = 0;
            this->year = 0;
    }
     Date::Date(double d, double m, double y)
        {
            this->day = d;
           this-> month = m;
            this->year = y;
        }
      int Date::CheckData()
        {
            if (day > 31 || day < 0)
            {
                return 1;
 
            }
            else if (month > 12 || month < 1)
            {
                return 2;
            }
            else if (year < 0)
                return 3;
            else return 0;
        }
Form.1
Код:
...
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
 {
 
       String ^s1;
            s1 = maskedTextBox1->Text;
           Double day1 = Convert::ToDouble(s1);
             
           String ^s2;
            s2 = maskedTextBox2->Text;
            Double month1 = Convert::ToDouble(s2);
            String ^s3;
            s3 = maskedTextBox3->Text;
            Double year1 = Convert::ToDouble(s3);
              
        Date A = gcnew Date(day1, month1, year1);
             
 }
error C2652: Date: недопустимый конструктор копии: первый параметр не должен быть "Date"
Вероника99 вне форума Ответить с цитированием
Старый 23.05.2016, 16:39   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

в cli надо писать %
p51x вне форума Ответить с цитированием
Старый 23.05.2016, 17:58   #3
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Так тоже пробовала:
Код:
Date.h(6): error C2652: Date: недопустимый конструктор копии: первый параметр не должен быть "Date"
        Date.h(3): см. объявление "Date"
Date.h(20): warning C4521: Date: заданы несколько конструкторов копии
Form1.h(173): error C2664: Date::Date(Date): невозможно преобразовать параметр 1 из "Date ^" в "Date"
          Оператор определенного пользователем преобразования недоступен, или
          Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
  Date.cpp
Date.h(6): error C2652: Date: недопустимый конструктор копии: первый параметр не должен быть "Date"
        Date.h(3): см. объявление "Date"
Date.h(20): warning C4521: Date: заданы несколько конструкторов копии
Вероника99 вне форума Ответить с цитированием
Старый 23.05.2016, 18:18   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

ну теперь исправляйте второй конструктор на const Date^
p51x вне форума Ответить с цитированием
Старый 23.05.2016, 18:47   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
ну теперь исправляйте второй конструктор на const Date^
И не должен. Чё это за знак ^? Возведение в степень чего? Вообще, ни в какое болото не вяжется.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 23.05.2016, 18:53   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
И не должен. Чё это за знак ^? Возведение в степень чего? Вообще, ни в какое болото не вяжется.
а это не просто С++, а C++ CLI.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.05.2016, 19:13   #7
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Чё это за знак ^?
Это типа умный указатель.
Сборщик мусора будет чесать тыкву когда память прихлопнуть.
Croessmah вне форума Ответить с цитированием
Старый 23.05.2016, 19:20   #8
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Сделала так:
Код:
#pragma once
ref class Date
{
public:
  Date(void);
  // Date(Date);
	 double day;
     double month;
        double year;
   
		 Date(double d, double m, double y);
      
		Date(const Date^);
       ~Date() { } 

		  virtual int CheckData();
       

};
Теперь явных ошибок нет,но выдает:
Date.obj : error LNK2020: неразрешенная лексема (06000001) Date::.ctor
90.obj : error LNK2020: неразрешенная лексема (06000001) Date::.ctor
.exe : fatal error LNK1120: 2 неразрешенных внешних элементов
Вероника99 вне форума Ответить с цитированием
Старый 23.05.2016, 19:20   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если это весь cpp то у вас не все конструкторы реализованы
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.05.2016, 19:21   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Это типа умный указатель.
Сборщик мусора будет чесать тыкву когда память прихлопнуть.
Опа-на! А я думал, что с++ знаю на пятёрку. Оказывается, не всё знаю?
Выходит Борман из Рехсага. Рядом с ним падает кирпич. - Вот, те раз, думает Борман. - Вот, те два, думает Штирлиц, бросая второй.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребят, уже запарился, гляньте, что не так!? конструктор копирования и оператор присваивания bayanist17 Помощь студентам 0 29.09.2013 12:00
Ошибка с конструктором копирования Qwoort Общие вопросы C/C++ 11 13.06.2012 21:53
Как узнать, что производится копирования файла? pavellyba Общие вопросы Delphi 5 11.08.2011 17:37
Макрос для копирования значений из нескольких файлов в один общий с определенным условием копирования zenner Microsoft Office Excel 0 21.03.2011 14:48
Что-то не так с конструктором Дырдин Общие вопросы C/C++ 7 26.03.2010 18:33