Форум программистов, компьютерный форум, киберфорум
Наши страницы

Конструктор копирования - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Случайные(псевдослучайные) числа http://www.cyberforum.ru/cpp-beginners/thread634835.html
Здравствуйте! Я знаю, что было много тем по поводу рандомных чисел в С++.Но всё же. Возникла у меня проблема с получением большого кол-ва случайных(точнее псвдослучайных) чисел, которые меньше...
C++ Ошибка при вызове функции В функции NewWords вызывается функция correct,при отладке я не могу войти в эту функцию,к тому же потом не выводится элементы объекта класса words и ID в программе на данный момент вызываются лишь 2... http://www.cyberforum.ru/cpp-beginners/thread634834.html
генерирую случайные числа C++
srand(time(NULL)); rand()%10; Всем привет, генерирую случайные числа, подскажите, пожалуйста, почему при запуске приложения числа постоянно генерируются? Как можно сделать так, чтобы при каждом...
C++ Как Увеличить шрифт элемента Edit Control
Создал Візартом Edit Control но там слишком маленький шрифт. У меня программа через Edit выводит данные, для вывода использую SetDlgItemText(IDC_EDIT1,p->Weight); вот такое выражения, подскажите...
C++ Реализация расширенного класса Integer http://www.cyberforum.ru/cpp-beginners/thread634791.html
Всем привет. Хочу реализовать аналог класса Integer в котором можно буде проводить операции с числами любой разрядности. Начал пока с написания функции сложения и вычитания. Возникли вопросы:...
C++ Объявление в структуре ругается на объявление батона struct StructurClientData { Button^ button; unsigned int data_ip4; DWORD system_id; HANDLE system_handle; SOCKET socket_client;... подробнее

Показать сообщение отдельно
moskitos80
61 / 61 / 10
Регистрация: 04.10.2011
Сообщений: 217
Завершенные тесты: 1

Конструктор копирования - C++

08.08.2012, 17:33. Просмотров 685. Ответов 6
Метки (Все метки)

Всем привет. У меня такая проблема: есть некий класс, допустим Test:

C++
1
2
3
4
5
6
7
8
9
10
11
class Test 
{
    protected:
        int value;
 
    public :
        Test(int v)
        {
            this->value = v;
        }
};
Этот класс я указал просто для наглядности проблемы. Я хочу при инициализации объектов использовать такой синтаксис:

C++
1
2
Test t = 10,
       t2 = t;
В принципе конструктор: Test(int v) мне это как раз и позволяет. А теперь такая ситуация, представим что при копировании мне нужно производить некие дополнительные действия, не важно какие. Первой моей попыткой было переопределить конструктор копирования (полный листинг)

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
#include <iostream>
 
using namespace std;
 
////////////////////////////////////////////////////////////////////////////////
 
class Test 
{
    protected:
        int value;
 
      public :  
          
          Test(int v)
          {
              this->value = v;
          }
          Test(Test& t)  // Переопределил :)
          {
              this->value = t.value;
          }
};
 
////////////////////////////////////////////////////////////////////////////////
 
int main() 
{
    Test t  = 10,  // error: no matching function for call to 'Test::Test(Test)'
           t2 = t;
    
    system("PAUSE");
    return 0;
}
И вот тут компилятор выдаёт: error: no matching function for call to 'Test::Test(Test)' Но я не могу определить такую конструкцию: Test(Test) - это получается конструктор копирования с параметром передаваемым по значению, а это не допустимо. Вот и вопрос как в подобной ситуации переопределить конструктор копирования?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru