Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строка - Перегрузка оператора << [C++] 
:(
    Опции темы
ArniLand
Дата 28.4.2010, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



Написал программу которая подсчитывает количество символов 'z' и заменяет каждый третий символ, символом '=', также перегружал оператор <<. Во время компиляции выдает такие ошибки. Помогите исправить пожалуйста.
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2143: syntax error : missing ';' before '&'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2433: 'ostream' : 'friend' not permitted on data declarations
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2061: syntax error : identifier 'ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2805: binary 'operator <<' has too few parameters
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(23) : error C2039: 'CountOfSymbols' : is not a member of 'Row'
        d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(2) : see declaration of 'Row'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(26) : error C2065: 'MyRow' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(26) : error C3861: 'srtlen': identifier not found
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(28) : error C2065: 'MyRow' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(31) : error C2065: 'MyRow' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(37) : warning C4018: '<=' : signed/unsigned mismatch
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(38) : error C2228: left of '.insert' must have class/struct/union
        type is 'char *'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(41) : error C2143: syntax error : missing ';' before '}'
main.cpp
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2143: syntax error : missing ';' before '&'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2433: 'ostream' : 'friend' not permitted on data declarations
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2061: syntax error : identifier 'ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : error C2805: binary 'operator <<' has too few parameters
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2872: 'ostream' : ambiguous symbol
        could be 'd:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : int ostream'
        or       'c:\program files\microsoft visual studio 9.0\vc\include\iosfwd(708) : std::ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2143: syntax error : missing ';' before '&'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2086: 'int ostream' : redefinition
        d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : see declaration of 'ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2872: 'ostream' : ambiguous symbol
        could be 'd:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : int ostream'
        or       'c:\program files\microsoft visual studio 9.0\vc\include\iosfwd(708) : std::ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2872: 'ostream' : ambiguous symbol
        could be 'd:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\row.h(11) : int ostream'
        or       'c:\program files\microsoft visual studio 9.0\vc\include\iosfwd(708) : std::ostream'
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2065: 'stream' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2065: 'Straight' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C2065: 'obj' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(8) : fatal error C1903: unable to recover from previous error(s); stopping compilation


Код программы:
Код

//Row.h
class Row
{
private:
    char *MyRow;
public:
    Row(char* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row obj);
};

//.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

Row::Row(char* pMyRow)
{
    MyRow = pMyRow;
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = strlen(MyRow);
    return Length;
}

int Row::CountOfSymbols()
{
    int sum = 0;
    for (int i = 0; i < srtlen(MyRow); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= strlen(MyRow); i+=3)
    MyRow.insert(i,"=");
    cout<<"\nRow = "<< MyRow;
    return 0
}

//main.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

ostream &operator<<(ostream &stream, Straight &obj)
{
    stream <<"Dlina stroki :" << obj->LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj->CountofSymbols() << "\n";
    stream <<"Zamena :" << obj->Change() << "\n";
    return stream;
}

int main()
{
    char L[40] = ("abdcezztyyuazyytztasaz");
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}










PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Код

#include<iostream>
using namespace std;

в Row.h
и про стражи включение не забывай.
Код

#ifndef ROW_H
#define ROW_H

...

#endif // ROW_H

либо 
Код

#pragma once

в самом начале, либо и то и другое.

PM   Вверх
toxx
Дата 28.4.2010, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Вы бы не лог ошибок выводили, а строки где ошибка...
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, я прокомментировал строки на которые жалуется компилятор
Код

//Row.h
class Row
{
private:
    char *MyRow;
public:
    Row(char* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row obj);//жалуется на эту строку
};
//.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>
using namespace std;
Row::Row(char* pMyRow)
{
    MyRow = pMyRow;
}
Row::~Row()
{}
int Row::LengthofRow()
{
    int Length;
    Length = strlen(MyRow);
    return Length;
}
int Row::CountOfSymbols()//жалуется на эту строку
{
    int sum = 0;
    for (int i = 0; i < srtlen(MyRow); ++i)//жалуется на эту строку
    {
        if (MyRow[i]=='z')//жалуется на эту строку
            sum++;
    }
    cout<< MyRow;//жалуется на эту строку
    return 0;
}
int Row::Change()
{
    for(int i = 2; i <= strlen(MyRow); i+=3)//жалуется на эту строку
    MyRow.insert(i,"=");//жалуется на эту строку
    cout<<"\nRow = "<< MyRow;
    return 0
}//жалуется на эту строку

//main.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>
using namespace std;
ostream &operator<<(ostream &stream, Straight &obj)//жалуется на эту строку
{
    stream <<"Dlina stroki :" << obj->LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj->CountofSymbols() << "\n";
    stream <<"Zamena :" << obj->Change() << "\n";
    return stream;
}
int main()
{
    char L[40] = ("abdcezztyyuazyytztasaz");
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}

PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



ArniLand

т.е. ответы ты принципиально не читаешь?
PM   Вверх
toxx
Дата 28.4.2010, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



azesmcar
похоже что так...
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



извините, что я не так сделал? Стражи порядка сейчас добавлю и проверю как поведет себя программа. Строки ошибок вы хотите чтобы каждою отдельно строку вывел?
PM MAIL   Вверх
toxx
Дата 28.4.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
да не в строках щас дело, просто если вы бы сделали, то что вам сказали, ошибки возможно исчезли бы совсем..
пробуйте..

Это сообщение отредактировал(а) toxx - 28.4.2010, 20:54
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(ArniLand @  28.4.2010,  20:50 Найти цитируемый пост)
Стражи порядка 

 smile  smile  smile не надо...ну пожжжжалуйста, только не их smile 

ArniLand
Я же подробно описал что делать, продублировать пост? Не только стражи включения, про include и using тоже забыл.

PM   Вверх
toxx
Дата 28.4.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



azesmcar
а я еще помню с предыдущей темы вот такое...=)
Код

friend ostream &operator<<(ostream &stream, const Row& obj);

PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



azesmcar, извините оговорился smile  Стражи включения))

toxx, все исправился. Но осталась одна ошибка, жалуется на цикл где каждый третий символ заменяется на '='
Ошибка:
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(39) : error C2228: left of '.insert' must have class/struct/union
        type is 'char *

Код программы:
Код

//Row.h
#include<iostream>
#pragma once
using namespace std;
class Row
{
private:
    char *MyRow;
public:
    Row(char* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row obj);
};

//.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>
#pragma once

using namespace std;

Row::Row(char* pMyRow)
{
    MyRow = pMyRow;
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = strlen(MyRow);
    return Length;
}

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < strlen(MyRow); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= strlen(MyRow); i+=3)
    MyRow.insert(i,"=");//жалуется на эту строку
    cout<<"\nRow = "<< MyRow;
    return 0;
}

//main.cpp
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>
#pragma once

using namespace std;

ostream &operator<<(ostream &stream, Row &obj)
{
    stream <<"Dlina stroki :" << obj.LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj.CountofSymbols() << "\n";
    stream <<"Zamena :" << obj.Change() << "\n";
    return stream;
}

int main()
{
    char L[40] = ("abdcezztyyuazyytztasaz");
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}








Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:03
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



toxx

Ну сам код я не смотрел, если приглядеться там все менять надо будет smile 
PM   Вверх
ArniLand
Дата 28.4.2010, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



все, подправил выше
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



ArniLand

Код

#pragma once

поставь в первой строке.

Цитата(ArniLand @  28.4.2010,  21:01 Найти цитируемый пост)
char *MyRow;

замени на
Код

string MyRow;

и добавь 
Код

#include <string>

PM   Вверх
toxx
Дата 28.4.2010, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
у тебя MyRow char*, а insert не для string случайно?
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0636 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.