Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
1

Ошибка в консольном приложении

22.11.2012, 12:40. Просмотров 588. Ответов 11
Метки нет (Все метки)

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
{
    class Program
    {
        public struct Point
        {
            public int X;
            public int Y;
 
            public void Method()
            {
                X++; Y++;
            }
 
            public void Display()
            {
                Console.WriteLine("X = {0}, Y = {1}", X, Y);
            }
        }
        public static void Main(string[] args)
        {
            Point myPoint;
            myPoint.X = 10;
            myPoint.Y = 20;
            myPoint.Display();
            Console.ReadLine();
 
            
            Increment(ref myPoint);
//Здесь мне нужно вызвать из структуры - "Display" , для уже нового значения в функции Increment!
 
            Console.ReadLine();
        }
        public static void Increment(ref Point myPoint)
        {//Как мне тут вызвать "Method" из структуры !!!-использую ref модификатор
 
 
        }    
    }
}
Заранее, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2012, 12:40
Ответы с готовыми решениями:

Логическая ошибка в консольном приложении
На рисунке изображен результат выполнения программы, которая должна определять,...

Ошибка в консольном приложении при подключении MFC?
Здорова! Создал консольное приложение и в него добавил код: #include...

Таймер в консольном приложении
Всем доброго времени суток, у меня вопрос, как сделать так, чтобы программа...

Графика в консольном приложении VS
подскажите как построить систему координат X,Y. в консольном приложении.Какие...

CAsyncSocket в консольном приложении
Пишу простейшие приложения (сервер, клиент) с использованием CAsyncSocket....

11
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7058 / 3360 / 455
Регистрация: 04.12.2011
Сообщений: 9,345
Записей в блоге: 5
22.11.2012, 13:38 2
Лучше бы не объявлять структуру локально в классе, а вот экземпляр структуры нужно. Вообще, читайте и старайтесь следовать рекомендациям. Оригинальность не самоцель, особенно вначале.
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
// Cli_consol.cpp: главный файл проекта.
#include "stdafx.h"
using namespace System;
class MProgram
{
public: 
struct MPoint
{
public:
    int X;
    int Y;
MPoint(){X=0;Y=0;}
void mMethod()
{
X++; Y++;
}
void Display()
{
Console::WriteLine("X = {0}, Y = {1}", X, Y);
}
};
MPoint mP;
MProgram(){mP=MPoint();}
};
int main(array<System::String ^> ^args)
{
MProgram prg=MProgram();
 
prg.mP.X=10;
prg.mP.Y=20;
prg.mP.mMethod();
prg.mP.Display();
Console::ReadLine();
return 0;
}
1
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
22.11.2012, 13:52  [ТС] 3
Дело в том что , как вы написали я тоже уже делал. Но у меня задание сделать так как я написал код в начале! В этом то вся и проблема
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7058 / 3360 / 455
Регистрация: 04.12.2011
Сообщений: 9,345
Записей в блоге: 5
22.11.2012, 14:12 4
Цитата Сообщение от Andreyz190 Посмотреть сообщение
Дело в том что , как вы написали я тоже уже делал. Но у меня задание сделать так как я написал код в начале! В этом то вся и проблема
Ваша проблема в другом. Нельзя обратиться к члену класса если его там нет. Вы объявили структуру в классе, но не создали экземпляра и не показали как его инициализировать. Потом Вы пытаетесь обратиться к тому чего не понимаете, то есть к типу данных, а не к его экземпляру. Если задание у Вас таково, во что верится с трудом, то это одна из проблем. Структура в cli, - тот же класс типа значения, но со спецификатором доступа public по умолчанию.
О том, что Вы уже делали, - посмотрите как пишется на C++/CLI public (с двоеточием после), так что, то о чём делали, лучше бы сказать, - я пишу на C#, но ошибся разделом. Тогда еще можно поверить, что компилировалось. Удачи.
0
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
22.11.2012, 14:32  [ТС] 5
Ладно скажу по другому! Метод Display должен вызываться только в Main !
При этом должно происходить увеличение значения полей X и Y структуры myPoint объявленной в методе Main. Увеличение происходит соответственно в функции Increment. Как мне это реализовать ?
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7058 / 3360 / 455
Регистрация: 04.12.2011
Сообщений: 9,345
Записей в блоге: 5
22.11.2012, 14:48 6
Цитата Сообщение от Andreyz190 Посмотреть сообщение
Ладно скажу по другому! Метод Display должен вызываться только в Main !
А он, в предложенном коде, где вызывается?
Цитата Сообщение от Andreyz190 Посмотреть сообщение
При этом должно происходить увеличение значения полей X и Y структуры myPoint объявленной в методе Main. Увеличение происходит соответственно в функции Increment. Как мне это реализовать ?
Main это не метод, а функция. Если Вам нужно объявить структуру (не её экземпляр) в Main, то не нужно её объявлять во внешнем к Мain (глобальном) объявлении другого класса. Объявите в Main и пользуйте. А инкремент оформленный в виде функции вызывайте хоть прямо в Display(). Это может быть как метод структуры так и внешнияя функция (тогда экземпляр структуры передайте по ссылке или указатель на него передайте). Вообще, лучше выложите задание дословно.
0
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
22.11.2012, 15:43  [ТС] 7
Мне надо создать функцию Increment в которой я буду вызывать Method. новое значение полученное после Method мне надо вывести на экран (т.е. указать на уже заранее объявленный Display), но сделать мне это надо не!!!! в функции Increment , а в Main - после того как я обьявлю функцию Increment.

Добавлено через 9 минут
Цитата Сообщение от Andreyz190 Посмотреть сообщение
Мне надо создать функцию Increment в которой я буду вызывать Method. новое значение полученное после Method мне надо вывести на экран (т.е. указать на уже заранее объявленный Display), но сделать мне это надо не!!!! в функции Increment , а в Main - после того как я обьявлю функцию Increment.
Метод Display в main вызывается для первоначальных значений Х и У , а мне надо еще для значений полученных после функции Increment!!!

Добавлено через 28 секунд
Цитата Сообщение от Andreyz190 Посмотреть сообщение
Мне надо создать функцию Increment в которой я буду вызывать Method. новое значение полученное после Method мне надо вывести на экран (т.е. указать на уже заранее объявленный Display), но сделать мне это надо не!!!! в функции Increment , а в Main - после того как я обьявлю функцию Increment.
Метод Display в main вызывается для первоначальных значений Х и У , а мне надо еще для значений полученных после функции Increment!!!
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7058 / 3360 / 455
Регистрация: 04.12.2011
Сообщений: 9,345
Записей в блоге: 5
22.11.2012, 16:13 8
Не хотите дать задание дословно, - дело Ваше. Получать доступ к полям и методам класса из-вне, постановка странная. Дружественную функцию хотите на С++/CLI написать? Удачи.
0
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
23.11.2012, 13:51  [ТС] 9
Цитата Сообщение от IGPIGP Посмотреть сообщение
Не хотите дать задание дословно, - дело Ваше. Получать доступ к полям и методам класса из-вне, постановка странная. Дружественную функцию хотите на С++/CLI написать? Удачи.
Лучше чем-нибудь помогли бы. А не цетировали !

Добавлено через 9 минут
цитировали!
0
HighPredator
5680 / 2002 / 720
Регистрация: 10.12.2010
Сообщений: 5,761
Записей в блоге: 3
23.11.2012, 15:39 10
Andreyz190, а вы часом не в C# делаете? А то по коду очень похоже на C#...
1
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
23.11.2012, 15:42  [ТС] 11
В С#. Блин точно, а почему написано на С++..
0
HighPredator
23.11.2012, 15:44     Ошибка в консольном приложении
  #12
 Комментарий модератора 
Цитата Сообщение от Andreyz190 Посмотреть сообщение
а почему написано на С++
Потому, что вы тут тему создали. Данную тему я закрываю, аналогичная будет создана в разделе C#.
0
23.11.2012, 15:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 15:44
Привет! Вот еще темы с ответами:

WxWidgets - в консольном приложении
Начал изучение библиотек wxWidgets в Code Blocks, столкнулся с проблемой...

MessageBox в консольном приложении
сделал так чтоб выводило текст из файла в консоль #include &quot;stdafx.h&quot;...

Меню в консольном приложении
есть ошибки не могу исправить #include &lt;iostream&gt; #include &lt;iomanip&gt;...


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

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

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