11 / 11 / 4
Регистрация: 27.09.2010
Сообщений: 32
1

Ошибка при попытке использовать объект класса в определении другого класса

03.11.2010, 13:53. Показов 1302. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Муторное название получилось

Прошу помощи.... есть созданный класс работы со строкой:
"MyString.h"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MyString
{
 
public:
    MyString(const char*);
    MyString(int);
    ~MyString();
 
public:
    void Clear();
 
    char* MString;
    int length;
    char& operator[] (int i) {return MString[i];}
    friend MyString& operator + (MyString&, MyString&);
};
Хочу использовать объект этого класса в "ethernet.h", то есть:
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
class Ethernet
{
public:
    Ethernet();
    ~Ethernet();
 
    int Connect();
    int Disconnect();
 
    int SetIP(IP_st &newIP);
    int GetIP(IP_st &curIP);
    bool IsConnected()
        
private:
    SOCKET eth_socket;
    IP_st ip;
    bool on_connected;
    sockaddr_in eth_addr;                
    int socket_error;                    
    int shift;
 
    MyString buffer(2000);
    MyString out_buffer(2000);
    MyString log_buffer(1000);
    MyString sendlog_buffer(1000);
    
    HANDLE socket_handle;                
 
};
Выдает ошибку: error C2059: syntax error : 'string'

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

Добавлено через 27 минут
Внимательно присмотревшись углядела еще ошибку: 'MyString' : 'class' type redefinition

Если я понимаю правильно, то в заголовочный файл нужно вводить нечто подобное:
#ifndef MYSTRING_H
#define MYSTRING_H

А вот как это правильно сделать? .....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2010, 13:53
Ответы с готовыми решениями:

Ошибка компиляции (преобразование объекта класса в объект другого класса)
Друзья, добрый день! Не могу понять почему выдается ошибка компиляции... Прога преобразует...

Вызов метода из другого класса, при этом нельзя создать объект второго класса и метод не статический
У меня есть 2 класса - один с формой и кнопкой на ней и другой класс, у которого есть метод void...

Как связать сигнал одного класса со слотом другого класса, содержащего указатель на объект этого класса?
Подскажите, пожалуйста, как связать сигнал одного класса со слотом другого класса, содержащего...

Ошибка Access Violation при попытке создать объект класса. В чем может быть проблема?
Код класса unit Unit2; interface uses SysUtils; type ABCMatrix = class private

2
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
03.11.2010, 16:40 2
в начале хедер файла
#pragma once
должно работать на всех недревних компиляторах.
Иначе читайте статью о директивах препроцессора.
0
11 / 11 / 4
Регистрация: 27.09.2010
Сообщений: 32
08.11.2010, 07:20  [ТС] 3
Да, все работает с pragma разобралась

Осталась ошибка в объявлении, ругается на:
MyString buffer(2000);
MyString out_buffer(2000);
MyString log_buffer(1000);
MyString sendlog_buffer(1000);

Пишет: error C2059: syntax error : 'constant'

Если я правильно понимаю эту ошибку, то компилятор считает вышенаписанные строчки объявлением функций, ну и соответственно ругается, чего это в скобках константа. Почему? Как правильно объявить?

Добавлено через 27 минут
Разобралась, резервировать место при декларации нельзя, правильно нужно было объявлять так:

MyString buffer;

потом в конструкторе:

Ethernet::Ethernet() : buffer(2000)
{

}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2010, 07:20
Помогаю со студенческими работами здесь

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

Ошибка при обращении из одного класса к методу другого класса
Структура проекта, 2 класса: класс графики MainWindow класс логики Сannibals при обращении из...

Ошибка при работе с объектом класса в конструкторе другого класса
Имеется данный код: https://github.com/ubelian/glgame/tree/master/glgame В файле Food.cpp в...

Использование в качестве поля класса указатель на объект другого класса
Ошибка в названии - "указателЯ" Вот, пытаюсь освоить ООП (пока только учусь): создаю класс...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru