На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Массивы в Visual C++ .Net
    Чтото я Net не понимаю smile.gif

    Структура
    __gc struct DATA
    {
    String *path;
    String *file;
    bool flag;
    }

    DATA *datatmp __gc [] = new DATA*[2];
    datatmp[0]->flag = true;
    Почему вываливается error:
    "Object reference not set to an instance of an object" ?

    B еще в догонку:
    String *d,*f,*c;
    Хочу что бы было d = f + c
    Как это здесь сделать. + не определен в String?
      QUOTE (Гость_olegf @ 6.11.03, 23:19)
      B еще в догонку:
      String *d,*f,*c;
      Хочу что бы было d = f + c
      Как это здесь сделать. + не определен в String?

      CString d,f,c;
      d = f + c + "werq";

        QUOTE (slan @ 7.11.03, 09:43)
        CString d,f,c;
        d = f + c + "werq";

        CString -MFC класс (с ним то работать я умею), а я говорю о System::Object::String smile.gif
          во первых на сколько я помню в MC++ для структур надо __value, а для управляемых классов __gc.
          а во вторых МС++ не сильно заточен под .NET, лучше пиши на C#, и проблем не будет, во всяком случае наких.
            QUOTE (hFoxy @ 7.11.03, 11:08)
            во первых на сколько я помню в MC++ для структур надо __value, а для управляемых классов __gc.
            а во вторых МС++ не сильно заточен под .NET, лучше пиши на C#, и проблем не будет, во всяком случае наких.

            Можно и __gc (сруктуры и классы все же тоже самое прочти)

            К сожелению надо С++
              я не понемаю эту жесткую привязку к языку, ведь .NET это многоязыковая платформа и язык большей роли не играет(всеравно все компилится в MSIL),
              а если тебе нужно явно работать с указателями, то можешь на том же C#, создать unsafe(неунравляемую функцию и тогда C# превращается в С ну или почти в С).
              вот пример:

              using System;

              namespace ConsoleApplication1
              {
              /// <summary>
              /// Summary description for Class1.
              /// </summary>
              ///
              public unsafe struct gt
              {
              public int i;
              public char ch;
              public gt* prev;
              public gt* pbeg;
              }

              class Class1
              {
              /// <summary>
              /// The main entry point for the application.
              /// </summary>
              [STAThread]
              static void Main(string[] args)
              {
              Poy();
              }

              public unsafe static void Poy()
              {
              gt f = new gt();
              f.i = 12;
              f.ch = 'd';
              f.prev = null;

              gt r = new gt();
              r.i = 13;
              r.ch = 'e';
              r.prev = &f;
              r.pbeg = &r;
              f.pbeg = &r;

              Console.WriteLine("{0} {1}", f.pbeg->ch, r.prev->ch);

              }
              }
              }
                да к стати в C# со string нет ни каких проблем:

                string a = "Hello ";
                string b = a + "Word";
                Console.WriteLine(cool.gif;
                  QUOTE (hFoxy @ 7.11.03, 12:47)
                  да к стати в C# со string нет ни каких проблем:

                  string a = "Hello ";
                  string b = a + "Word";
                  Console.WriteLine(cool.gif;

                  2hFoxy: Ну блин, сказано MC++ значит МС++, чего предлагать то, что человеку не нужно? А почему не нужно, он сам разберется или спросит.
                  2slan: Внимательней читай вопрос, прежде чем отвечать, ок? не обижайся, все ок, но МФЦ тут действительно нипричем

                  Используй метод Concat или напиши свой враппер и перегрузи оператор +
                  Сообщение отредактировано: kl -
                    QUOTE (Гость_olegf @ 6.11.03, 21:19)
                    Чтото я Net не понимаю smile.gif

                    Структура
                    __gc struct DATA
                    {
                    String  *path;
                    String  *file;
                    bool flag;
                    }

                    DATA *datatmp __gc [] = new DATA*[2];
                    datatmp[0]->flag = true;
                    Почему вываливается error:
                    "Object reference not set to an instance of an object" ?

                    Слегка не помню, пока негде посмотреть...
                    а там не что-нить вроде
                    DATA *datatmp __gc [] = new DATA __gc[2];
                    должно быть?
                    гляну попозже...
                    Сообщение отредактировано: kl -
                      Блин, new[] инициализирует массим, но не элементы, если они не value-type. Надо добавить
                      CODE

                      datatmp[0]=new DATA();datatmp[1]=new DATA();


                      По поводу второго примера: __gc * указатель это всё ещё указатель, поэтому
                      CODE

                      System.String *s1,*s2;
                      s1=s1+s2;//сложение указателей
                      s1.operator+(s2);//сложение строк


                      Всё это есть в MSDN
                        QUOTE
                        s1.operator+(s2);//сложение строк

                        Xm это интересно smile.gif

                        НАсчет структуры я поменял
                        __value struct DATA и все нормально

                        QUOTE
                        я не понемаю эту жесткую привязку к языку, ведь .NET это многоязыковая платформа и язык большей роли не играет(всеравно все компилится в MSIL),

                        Я просто пишу часть функции а она на С++ smile.gif

                        Ребята еще вопрос:
                        Правильно что управляемые типв и STD не дружат попробывал
                        vector <String> dfd;
                        Error.
                        System::Array явно не заменяет Std smile.gif
                        Или они что-то замену имеют.
                        Сорри за вопросы с FrameWork буквально на днях стал работать smile.gif
                          QUOTE (omhl @ 7.11.03, 21:42)
                          Правильно что управляемые типв и STD не дружат попробывал
                          vector <String> dfd;
                          Error.
                          System::Array явно не заменяет Std smile.gif
                          Или они что-то замену имеют.
                          Сорри за вопросы с FrameWork буквально на днях стал работать smile.gif
                            2kl : Спасибо,позновательно smile.gif
                            Честно говоря решил не мучится подключил Header MFC и использую CString и STL.
                            РЕшил вернуться к FrameWork позже smile.gif

                              Есть namespace System.Collections - в нём есть все (или почти все) коллекции из std::
                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0303 ]   [ 16 queries used ]   [ Generated: 28.04.24, 13:49 GMT ]