Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строки замена и длина строки - полиморфизм 
:(
    Опции темы
ArniLand
Дата 22.4.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Написал программу которая заменяет последний символ на первый и измеряет длину строки. Выдает следующие ошибки при компиляции. Помогите их исправить пожалуйста.

Ошибки:
Цитата

c:\WINDOWS\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:"obj\Debug\Laba 2.1 C sharp Masha.exe" /target:exe Program.cs Properties\AssemblyInfo.cs Row.cs
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(14,18): error CS0060: Inconsistent accessibility: base class 'Laba_2._1_C_sharp_Masha.Row' is less accessible than class 'Laba_2._1_C_sharp_Masha.Numeral'
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(8,11): (Related location)
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(40,18): error CS0060: Inconsistent accessibility: base class 'Laba_2._1_C_sharp_Masha.Row' is less accessible than class 'Laba_2._1_C_sharp_Masha.SmallLetters'
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(8,11): (Related location)



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

//Row.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Laba_2._1_C_sharp_Masha
{
    class Row
    {
        public abstract void LengthofRow();
        public abstract string Right();
    }

    public class Numeral : Row//жалуется на эту строку
    {
        public string Str;

        public Numeral(string pStr)
        {
            Str = pStr;
        }
        ~Numeral()
        {
        }

        public override void LengthofRow()
        {
            Console.WriteLine("Dlina stroki:" + Str.Length);

        }

        public override string Right(string pStr)
        {
            pStr = Str.Replace('5', '1');
            return pStr;
        }
    }


    public class SmallLetters : Row//и жалуется на эту строку
    {
        private string Str_1;

        public SmallLetters(string aStr)
        {
            Str_1 = aStr;
        }

        ~SmallLetters()
        {
        }

        public override void LengthofRow()
        {
            Console.WriteLine("Dlina stroki:" + Str_1.Length);
        }

        public override string Right(string aStr)
        {
            aStr = Str_1.Replace('e', 'a');
            return aStr;
        }
    }
}

//Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Laba_2._1_C_sharp_Masha
{
    class Program
    {
        static void Main(string[] args)
        {
            IList<Row> objRow = new List<Row>();
            objRow.Add(new Numeral("12345"));
            objRow.Add(new SmallLetters("abcde"));

            foreach (Row currentRow in objRow)
            {
                Console.WriteLine("Dlina {0}", currentRow.LengthofRow());
                Console.WriteLine("Zamena {0}", currentRow.Right());
            }
        }
    }
}






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


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



класс Row должен быть public abstract.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
ArniLand
Дата 22.4.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



diadiavova, сделал
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Laba_2._1_C_sharp_Masha
{
    public abstract class Row
    {
        public abstract void LengthofRow();
        public abstract string Right();
    }

    public class Numeral : Row
    {
        private string Str;

        public Numeral(string pStr)
        {
            Str = pStr;
        }
        ~Numeral()
        {
        }

        public override void LengthofRow()
        {
            Console.WriteLine("Dlina stroki:" + Str.Length);

        }

        public override string Right(string pStr)
        {
            pStr = Str.Replace('5', '1');
            return pStr;
        }
    }


    public class SmallLetters : Row
    {
        private string Str_1;

        public SmallLetters(string aStr)
        {
            Str_1 = aStr;
        }

        ~SmallLetters()
        {
        }

        public override void LengthofRow()
        {
            Console.WriteLine("Dlina stroki:" + Str_1.Length);
        }

        public override string Right(string aStr)
        {
            aStr = Str_1.Replace('e', 'a');
            return aStr;
        }
    }
}

сделал как вы сказали, но теперь выдает такие ошибки. Что оно хочет, не сильно понимаю.
Цитата

D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(32,32): error CS0115: 'Laba_2._1_C_sharp_Masha.Numeral.Right(string)': no suitable method found to override
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(14,18): error CS0534: 'Laba_2._1_C_sharp_Masha.Numeral' does not implement inherited abstract member 'Laba_2._1_C_sharp_Masha.Row.Right()'
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(11,32): (Related location)
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(58,32): error CS0115: 'Laba_2._1_C_sharp_Masha.SmallLetters.Right(string)': no suitable method found to override
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(40,18): error CS0534: 'Laba_2._1_C_sharp_Masha.SmallLetters' does not implement inherited abstract member 'Laba_2._1_C_sharp_Masha.Row.Right()'
D:\Мои документы\Visual Studio 2008\Projects\Laba 2.1 C sharp Masha\Laba 2.1 C sharp Masha\Row.cs(11,32): (Related location) 

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


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

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



Код

public abstract string Right();
public override string Right(string aStr)


Набор параметров должен быть одинаковым
PM   Вверх
diadiavova
Дата 23.4.2010, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



ArniLand, ну у тебя в абстрактном классе оперделён метод без параметров, а в производных ты пытаешься переопределить его с параметром pStr, в результате на каждый такой класс получаешь по две ошибки: с одной стороны абстрактный метод без параметров не реализован впроизводном классе, с другой - в производном классе пытаешься перопределить метод, отсутствующий в базовом(точнее метод с таким именем есть, но сигнатура у него другая.
Код

//Row.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


    class Row
    {
        public abstract void LengthofRow();
        public abstract string Right(string pStr);
    }




--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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