Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ С\С++ _ странный символ в си++ коде в visual studio

Автор: voipp 23.4.2011, 0:36

При создании форм в visual studio встречаю такой символ : ^ похожий на ссылку в pascal. Ктонибудь знает что это?

Автор: Litkevich Yuriy 23.4.2011, 9:01

по-моему в студии уже какая-то помесь пошла Си++ и С#

Автор: Iron Bug 24.4.2011, 15:16

ну, вообще это побитовое XOR.
мало ли где может встретиться... про формы в VS сказать не могу - не пользуюсь VS.

Автор: Litkevich Yuriy 24.4.2011, 16:01

Цитата(Iron Bug @ 24.4.2011, 18:16) *
ну, вообще это побитовое XOR.
я как-то смотрел один исходник, там был этот "домик", но он не клеится никак в качестве логической операции (не на своём месте).
Вот например:
        Void displayException(Exception^ exception)
        {
            StringBuilder^ stringBuilder = gcnew StringBuilder();
            do
            {
                stringBuilder->Append(exception->Message + "  ");

                if (exception->GetType() == Win32Exception::typeid)
                {
                    stringBuilder->Append("Error code 0x" + ((Win32Exception^)exception)->NativeErrorCode.ToString("x") + ".  ");
                }

                exception = exception->InnerException;
            }
            while (exception != nullptr);
            MessageBox::Show(stringBuilder->ToString(), this->Text, MessageBoxButtons::OK, MessageBoxIcon::Error);
        }


Это из файла MainWindow.h
к нему есть только файл MainWindow.resx

Автор: mezmay 24.4.2011, 20:21

Значит создан CLR-проект в Visual Studio, то есть используется managed C++ (т.е. расширенный, не стандартный С++) и библиотека .NET
короче говоря .NET как и Qt расширяет С++

^ - аналог * в unmanaged C++
gcnew - аналог new

Автор: Phoenix_nsk 2.5.2011, 11:54

Это "умные" указатели.

Автор: Алексей1153 2.5.2011, 12:16

Цитата(Litkevich Yuriy @ 24.4.2011, 19:01) *
я как-то смотрел один исходник, там был этот "домик", но он не клеится никак в качестве логической операции (не на своём месте).


Юр, дык для целых чисел это побитовое xor (не булево, а побитовое). А в целом и общем это бинарный оператор, который можно и переопределить

и никаких загадок вовсе или, Боже упаси, умных указателей ))

Автор: Litkevich Yuriy 2.5.2011, 19:58

Алексей1153, ты код приведённый мной внимательно смотрел?

Автор: Алексей1153 2.5.2011, 20:04

Litkevich Yuriy, упс ) Да, в аргументе странно.


ОФФ:


Но через такой костыль:

#define ^ *

прокатит

Автор: Phoenix_nsk 2.5.2011, 23:41

Если *, то не значит что это умножение.
Если ^ - не 100% значит побитовое исключающее или.

^ - в том числе и "умные" указатели.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)