Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 165
#1

Не удается в главной программе уладить противоречия с указателями и адресами - C++

12.11.2013, 01:42. Просмотров 438. Ответов 1
Метки нет (Все метки)

Доброго времени суток,у меня есть почти готовая программа, но у меня проблемы с указателями и адресами. Все ф-ии вроде написаны правильно, но проблемы в main. Делала, но не доделала.
Описать полиморфные функции, принимающие своим параметрам указатели на интерфейс 2: функции-операции сдвига для потокового ввода / вывода,использующий интерфейс с
преобразованием объекта в строку и наоборот.


1>c:\users\оксана\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\main.c pp(66): error C2243: приведение типов: преобразование "last *" в "interface_2 *" существует, но недоступно
1>c:\users\оксана\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\main.c pp(67): error C2243: приведение типов: преобразование "last *" в "interface_2 *" существует, но недоступно
1>c:\users\оксана\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\main.c pp(69): error C2664: vvid: невозможно преобразовать параметр 1 из "interface_2 *" в "interface_2 &"
1>c:\users\оксана\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\main.c pp(70): error C2664: vuvid: невозможно преобразовать параметр 1 из "interface_2 *" в "interface_2 &"
1>c:\users\оксана\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\main.c pp(72): error C2664: vvid: невозможно преобразовать параметр 1 из "interface_2 *" в "interface_2 &"
1>c:\users\оксана\documents\visual studio 2012\projects\consoleapplication1\consoleapplication1\main.c pp(73): error C2664: vuvid: невозможно преобразовать параметр 1 из "interface_2 *" в "interface_2 &"

main
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
#include "flower.h"
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <cctype>
FILE*uf;
 
void vvid (interface_2 &M)
{
    cout << "Enter the name and color of flower:" ;
    char *str_0 = new char[50];
    cin.getline(str_0, 50);
    M.str_ob(str_0);
}
 
void vuvid (interface_2 &M)
{
    cout << "\nVuvid vvedenoho objecta:" << M.ob_str() << endl;
}
 
using namespace std;
int main()
{
last ob_1, ob_2("Hyacinth");
 
    cout << "k-st objectiv: " << ob_1.Get_Count() << endl;
 
    int count= ob_1.Get_Count();
 
    cout << "number of object 1 is " << ob_1.Get_Num() << endl;
    cout << "number of object 2 is " << ob_2.Get_Num() << endl;
 
    interface_1 *A1[2] = {0}; 
 
    A1[0] = &ob_1;                 
    A1[1] = &ob_2;             
 
    interface_1 *Rez= new last() ;
 
    
    for(int i = 0; i < count; i++)
    {
        for( int j = 1; j < count; j++)
        {
            if( A1[j]->Get_Num() < A1[j]->Get_Num())
            {
                Rez = A1[j]; 
                A1[j] = A1[j-1];
                A1[j-1] = Rez;
            }
        }
    }
 
    for(int i=0; i<count; i++)
    {
       
        cout<<A1[i]->Get_Num()<<"\n";
       
    }
 
        cout << "Vuvid objecta 1: " << ob_1.ob_str() << "\nVuvid objecta 2: " << ob_2.ob_str() << endl;
    
        interface_2 *one=&ob_1;
        interface_2 *two=&ob_2;
 
    vvid ( one );
    vuvid (one );
 
    vvid ( two);
    vuvid ( two);
 
        system("pause");
    return 0;
}
flower
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
# include <string>
# include <iostream>
#include <stdio.h>
#include <tchar.h>
#include <time.h>
 
using namespace std;
namespace myname
{
    static int count = 0;
}
 
 
class interface_1
{
public:
    virtual int Get_Num() = 0; 
    virtual int Get_Count() = 0;
};
 
 
class interface_2
{
public:
    virtual void str_ob(char *) = 0;
    virtual char* ob_str() = 0;
};
 
 
class flower
{
public:
    int number;
    char *color;
    char *name;
 
    flower()
    {
        number = 6; 
        name = new char[20]; 
        strcpy(name,"Romashka"); 
        color = new char[20]; 
        strcpy(color, "Biluy");
    };
 
    ~flower()
    {cout<<"Robota destructora";
    delete []color;
    delete []name;
    };
 
};
 
class last : public flower, public interface_1, interface_2
{
public:
 
    int num;
    last() : flower(){  num = ++myname::count;  }
    last(char* o) { strcpy(name, o); num = ++myname::count;}
    ~last() { }
    int Get_Count(){ return myname::count;}
    int Get_Num(){ return num;}
 
    //funkcii konvertacii stricku v object
    void str_ob(char *str_0)
    {
        char *pch = strtok (str_0, " ");
        this->name = pch;
        pch = strtok (str_0, " "); 
        this->color = pch;
    }
    //funkcii konvertacii objecta v strichku
    char* ob_str()
    {
        char *str_1 = new char[20];
        strcpy(str_1, this->color);
        char *str_2 = new char[20];
        strcpy(str_2, this->name);
        strcat(str_1," ");
        strcat(str_1,str_2);
        return str_1;
    }
 
    friend ostream& operator <<(ostream& out, last& C)
    {
        return out << "\n\Name = " << C.name ;
    }
 
    last& operator = (last& C)
    {
 
        if(C.name)
        {
            name = new char [strlen(C.name)+1];
            strcpy (name, C.name);
        }
        else name = 0;
 
    };
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 01:42     Не удается в главной программе уладить противоречия с указателями и адресами
Посмотрите здесь:

C++ Разместить на главной диагонали матрицы суммы элементов, лежщих на диагоналях, перпендикулярных к главной
C++ Разработать функцию и использовать её в главной программе
Непонятный момент в программе с указателями C++
Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями). C++
C++ Как вызвать в главной программе оператор унарный минус
Не удается использовать функцию gets в программе, где создается поток C++
Не удается запустить программу. Не удается найти указанный файл C++
C++ как сделать чтобы функция не изменяла переданный в нее двумерный массив в главной программе?
MS visual Studio 2012 Не удается запустить программу. Не удается найти указаный файл C++
C++ Не удается запустить программу. Не удается найти указанный файл. Microsoft visual studio
Не удается запустить программу в VS2010: "Не удается найти указанный файл" C++
C++ Разница байт между адресами переменных

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zvoronz
271 / 238 / 21
Регистрация: 29.05.2012
Сообщений: 889
12.11.2013, 06:32     Не удается в главной программе уладить противоречия с указателями и адресами #2
Как написано в MSDN:

Кликните здесь для просмотра всего текста
'conversion type' conversion from 'type1' to 'type2' exists, but is inaccessible
Access protection (protected or private) prevented conversion from a pointer to a derived class to a pointer to the base class.

The following sample generates C2243:

// C2243.cpp
// compile with: /c
class B {};
class D : private B {};
class E : public B {};

D d;
B *p = &d; // C2243

E e;
B *p2 = &e;


То есть у вас здесь
C++
1
class last : public flower, public interface_1, interface_2
ограничение преобразования указателя дочернего класса last к указателю базового класса interface_2.
Yandex
Объявления
12.11.2013, 06:32     Не удается в главной программе уладить противоречия с указателями и адресами
Ответ Создать тему
Опции темы

Текущее время: 03:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru