Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2015, 16:43   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Не работает метод со спецификатором const

Подскажите пожалуйста , почему не работает метод func() ?

Код:
ref class Message
{
public:
	int x;
	void func() const 
	{
		Console::WriteLine("void func() ");
		//x=800;
	}
 };
RAFA91 вне форума Ответить с цитированием
Старый 20.09.2015, 17:01   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Видимо потому что в .NET/C# нет такого и в С++/CLI решили тоже не делать.
http://programmersforum.ru/showpost....7&postcount=31

Ошибки читать не пробовали? Я попробовал это скомпилировать в VS2012, получил вполне понятную ошибку
Код:
error C3842: 'func': 'const' and 'volatile' qualifiers on member functions of managed types are not supported
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.09.2015, 17:08   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

надо переходить на си шарп

в расширенном с++ можна инициализировать статическую переменную в самом классе чего нету в чистом с++.

в си решетке тоже так ?

Последний раз редактировалось Stilet; 21.09.2015 в 17:41.
RAFA91 вне форума Ответить с цитированием
Старый 21.09.2015, 17:14   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это фича в С++CLI пришла именно от C#.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.09.2015, 17:17   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И даже не статическую можно.

И еще кроме const (compile-time) есть readonly.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 21.09.2015 в 17:19.
Alex11223 вне форума Ответить с цитированием
Старый 21.09.2015, 17:27   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

readonly тоже времени компиляции.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.09.2015, 17:40   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да ну?
https://msdn.microsoft.com/en-us/library/acdd6hb7.aspx
Цитата:
while a const field is a compile-time constant, the readonly field can be used for runtime constants
Код:
    class MyClass
    {
        public readonly int Something = new Random().Next();
    }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 21.09.2015 в 17:42.
Alex11223 вне форума Ответить с цитированием
Старый 22.09.2015, 15:32   #8
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

почему при написании в value классе деструктора и конструктора , который

не принимает параметров получаю косячек ?

в ref классе работало же

Код:
value class Message
{
public:
	int x;
	
	//Message()  {}
	Message(int a) : x(a) {}
	//~Message() {}
 };
при написании копировщика и оператора = тоже получаю ошибку.

что за фигня ?

Последний раз редактировалось RAFA91; 22.09.2015 в 15:41.
RAFA91 вне форума Ответить с цитированием
Старый 22.09.2015, 15:57   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В C# нельзя задавать конструктор без параметров у структур (структуры там это ValueType, а не просто класс с public по умолчанию), value класс в C++/CLI это и есть примерно тоже самое, вот видимо и тут так сделали.

Причем про конструктор это вроде именно фича языка, а не самого CLR.
http://stackoverflow.com/a/333840/964478

https://msdn.microsoft.com/en-us/lib...and_finalizers
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 22.09.2015 в 15:59.
Alex11223 вне форума Ответить с цитированием
Старый 22.09.2015, 16:16   #10
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

конструктор копировщик работает только такой

Код:
Message(const Message ^rhs) 
	{
		Console::WriteLine("Конструктор копировщик");
		x=rhs->x;
	}
и такой

Код:
Message(const Message *rhs) 
	{
		Console::WriteLine("Конструктор копировщик 2");
		x=rhs->x;
	}
оператор присвоения как не крутил - все равно не работает.

Последний раз редактировалось RAFA91; 22.09.2015 в 16:31.
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает метод Гаусса katrin1702 Помощь студентам 4 25.12.2012 02:22
Не работает метод оптимизации unijkoder C# (си шарп) 1 06.03.2012 18:13
Не работает метод __call() romantik2011 PHP 2 03.08.2011 23:55
Не работает метод SORT leonard Microsoft Office Excel 0 17.05.2011 13:18
Не работает метод GET Golovastik PHP 6 08.07.2010 22:40