Vs 2012 Ошибка При Передаче Аргумента В Функцию Writeline

Тема в разделе "MS Visual C++", создана пользователем War1ock, 14 окт 2012.

  1. War1ock

    War1ock Гость

    Господа, приветствую!

    разбираю задачки из книги Айвора Хортона (Visual C++ 2010. Полный курс)

    Есть код в Visual C++ 2012:


    Код (C++):
    #include "stdafx.h"

    using namespace System;

    enum class Year {January, February, March, April, May, June, July, August, September, October, November, December};

    int main(array<System::String ^> ^args)

    {

    Year Mounth = Year::January;
    int value = safe_cast<int>(Mounth);
    Console::WriteLine(L"Month № {0}, value = {1}", Mounth, value);

    }
    Не пойму почему вылетает ошибка

    error C2665: 'System::Console::WriteLine' : none of the 19 overloads could convert all the argument types

    Я понял, что компилятор хочет сказать, что передаю набор аргументов, который не соответствует принимаемым аргументам из методов Console::WriteLine

    Но черт побери, не пойму как задать правильно

    Поставил VS 2010, тот же пример скомпилился без проблем.
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    наверно в новой версии компилятора подпилили ваш writeline...угу, так часто бывает, тут помочь нечем, остается только развести руками и пойти на msdn искать причину(если очень хочется).

    Разрешите немного оффтопа?:
    почему учите именно visual C++? (ничего кроме любопытства).
     
  3. War1ock

    War1ock Гость

    Судя по

    http://msdn.microsoft.com/en-us/library/sy....writeline.aspx

    действительно подпилили.

    но тем не менее есть WriteLine(Object), при этом код

    Код (C++):
    #include "stdafx.h"
    using namespace System;
    enum class Year {January, February, March, April, May, June, July, August, September, October, November, December};

    int main(array<System::String ^> ^args)
    {
    Year Mounth = Year::January;
    int value = safe_cast<int>(Mounth);
    Console::WriteLine(Mounth);
    }
    выдает ту же ошибку

    Теперь задался вопросом: как вообще вывести в данном случае имена констант перечисления =)
    ______
    Насчет выбора именно Visual С++:
    задался целью освоить написание приложений под windows, а будучи еще в универе использовал VS 2006. Поэтому решил все вспомнить и изучить, используя
    инструмент с которым хоть немного знаком. Как оказалось, по прошествии времени VS 2006 и VS 2012 это как небо и земля, но тем не менее решил поэкспериментировать с 2012.
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    В VS можно писать на стандартном С++(хоть и соответствие их компилятора стандарту оставляет желать лучшего), использовать CLI и Managed C++ не обязательно.
     
Загрузка...

Поделиться этой страницей