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

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

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

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

12.11.2013, 01:42. Просмотров 546. Ответов 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;
 
    };
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 01:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не удается в главной программе уладить противоречия с указателями и адресами (C++):

Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями). - C++
Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями). Нужно как бы три программы(каждую...

Непонятный момент в программе с указателями - C++
Для вывода строки по элементам была написана программа, в которой применялся указатель #include &lt;iostream&gt; void f (char v) { ...

сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями - Pascal ABC
Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями). Нужно как бы три программы(каждую...

Не работает функция в программе, похоже ошибка где-то с указателями или с типами переменных - C (СИ)
суть программы, вводится строка, с клавиатуры задается число, если есть слова в строке, в которых есть заданное число случайных цифр, то...

Уважаемые пользователи нужно уладить ошибку со списком - MS Access
Здравствуйте! Подскажыте как можно перемещать элемент списка при нажатии кнопок?

Исследование гипотез на противоречия - Логика и множества
Народ со старым новым годом вас... Кто нибудь сможет да помочь по братске 1. (A\/B)-&gt;(C/\D) 2. (D\/E)-&gt;G 3. A\/ !G Добавлено...

1
zvoronz
271 / 239 / 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.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 06:32
Привет! Вот еще темы с ответами:

Противоречия с ANSI & UNICODE - Visual Basic
Hello ALL! Может, кто-нибудь сталкивался с противоречием (возможно, только с моей точки зрения это является противоречием;-))) в...

Не удается использовать функцию gets в программе, где создается поток - C++
Приветствую всех. Я в меру своих возможностей изучаю С++ по книге Г. Шилдта. Время от времени пытаюсь самостоятельно писать небольшие...

Разработать функцию и использовать её в главной программе - C++
Ясли не трудно можна с коментариями.

Как правильно описать функцию в главной программе? - Pascal ABC
function StepenNk (N: word; k: byte): longint; {N**k} var j : byte; St : longint; {ST:= N**k} begin St:= N; for j:= 2 to k...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.