Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
22.11.2012, 12:40     Ошибка в консольном приложении #1
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 модификатор
 
 
        }    
    }
}
Заранее, спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,719
Записей в блоге: 3
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;
}
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
22.11.2012, 13:52  [ТС]     Ошибка в консольном приложении #3
Дело в том что , как вы написали я тоже уже делал. Но у меня задание сделать так как я написал код в начале! В этом то вся и проблема
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,719
Записей в блоге: 3
22.11.2012, 14:12     Ошибка в консольном приложении #4
Цитата Сообщение от Andreyz190 Посмотреть сообщение
Дело в том что , как вы написали я тоже уже делал. Но у меня задание сделать так как я написал код в начале! В этом то вся и проблема
Ваша проблема в другом. Нельзя обратиться к члену класса если его там нет. Вы объявили структуру в классе, но не создали экземпляра и не показали как его инициализировать. Потом Вы пытаетесь обратиться к тому чего не понимаете, то есть к типу данных, а не к его экземпляру. Если задание у Вас таково, во что верится с трудом, то это одна из проблем. Структура в cli, - тот же класс типа значения, но со спецификатором доступа public по умолчанию.
О том, что Вы уже делали, - посмотрите как пишется на C++/CLI public (с двоеточием после), так что, то о чём делали, лучше бы сказать, - я пишу на C#, но ошибся разделом. Тогда еще можно поверить, что компилировалось. Удачи.
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
22.11.2012, 14:32  [ТС]     Ошибка в консольном приложении #5
Ладно скажу по другому! Метод Display должен вызываться только в Main !
При этом должно происходить увеличение значения полей X и Y структуры myPoint объявленной в методе Main. Увеличение происходит соответственно в функции Increment. Как мне это реализовать ?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,719
Записей в блоге: 3
22.11.2012, 14:48     Ошибка в консольном приложении #6
Цитата Сообщение от Andreyz190 Посмотреть сообщение
Ладно скажу по другому! Метод Display должен вызываться только в Main !
А он, в предложенном коде, где вызывается?
Цитата Сообщение от Andreyz190 Посмотреть сообщение
При этом должно происходить увеличение значения полей X и Y структуры myPoint объявленной в методе Main. Увеличение происходит соответственно в функции Increment. Как мне это реализовать ?
Main это не метод, а функция. Если Вам нужно объявить структуру (не её экземпляр) в Main, то не нужно её объявлять во внешнем к Мain (глобальном) объявлении другого класса. Объявите в Main и пользуйте. А инкремент оформленный в виде функции вызывайте хоть прямо в Display(). Это может быть как метод структуры так и внешнияя функция (тогда экземпляр структуры передайте по ссылке или указатель на него передайте). Вообще, лучше выложите задание дословно.
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!!!
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,719
Записей в блоге: 3
22.11.2012, 16:13     Ошибка в консольном приложении #8
Не хотите дать задание дословно, - дело Ваше. Получать доступ к полям и методам класса из-вне, постановка странная. Дружественную функцию хотите на С++/CLI написать? Удачи.
Andreyz190
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 12
23.11.2012, 13:51  [ТС]     Ошибка в консольном приложении #9
Цитата Сообщение от IGPIGP Посмотреть сообщение
Не хотите дать задание дословно, - дело Ваше. Получать доступ к полям и методам класса из-вне, постановка странная. Дружественную функцию хотите на С++/CLI написать? Удачи.
Лучше чем-нибудь помогли бы. А не цетировали !

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

Тетрис в консольном приложении C++
C++ Меню в консольном приложении
C++ Ошибка в консольном приложении при подключении MFC?

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

Или воспользуйтесь поиском по форуму:
HighPredator
23.11.2012, 15:44     Ошибка в консольном приложении
  #12
 Комментарий модератора 
Цитата Сообщение от Andreyz190 Посмотреть сообщение
а почему написано на С++
Потому, что вы тут тему создали. Данную тему я закрываю, аналогичная будет создана в разделе C#.
Yandex
Объявления
23.11.2012, 15:44     Ошибка в консольном приложении
Закрытая тема Создать тему
Опции темы

Текущее время: 20:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru