Ошибка использование имени типа не допускается

AKIV

0 / 0 / 0

Регистрация: 06.10.2021

Сообщений: 12

1

Ошибка — использование имени типа не допускается

06.10.2021, 20:29. Показов 2546. Ответов 6

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Ошибка в строках где есть float. И в строке 18 textBox1->Text
Помогите пожалуйста, никак не пойму, что не так.

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
    private: void calculate()
    {
        switch (oper)
        {
        case 1:
            b = a + float.Parse(textBox1->Text);
            textBox1->Text = b.ToString();
            break;
        case 2:
            b = a - float.Parse(textBox1->Text);
            textBox1->Text = b.ToString();
            break;
        case 3:
            b = a * float.Parse(textBox1->Text);
            textBox1->Text = b.ToString();
            break;
        case 4:
                if (float.Parse(textBox1->Text) == 0)
                {
                    textBox1->Text = "Делить на 0 нельзя!";
                }
                else
                {
                    b = a / float.Parse(textBox1->Text);
                    textBox1->Text = b.ToString();
                }
            break;
        default:
            break;
        }
 
    }



0



фрилансер

4816 / 4419 / 941

Регистрация: 11.10.2019

Сообщений: 11,655

06.10.2021, 20:44

2

AKIV, а это точно C++ ?

у типа float нет метода Parse



1



0 / 0 / 0

Регистрация: 06.10.2021

Сообщений: 12

06.10.2021, 21:52

 [ТС]

3

Да, это С++. С помощью форм мне нужно создать калькулятор. И готовый код нам дали учителя, а это часть кода, но он не работает…

Добавлено через 5 минут
Алексей1153, Да, это С++. С помощью форм мне нужно создать калькулятор. И готовый код нам дали учителя, а это часть кода, но он не работает…



0



фрилансер

4816 / 4419 / 941

Регистрация: 11.10.2019

Сообщений: 11,655

06.10.2021, 21:53

4

Цитата
Сообщение от AKIV
Посмотреть сообщение

Да, это С++

не похоже )

что-то напутано — либо язык, либо учителя



0



0 / 0 / 0

Регистрация: 06.10.2021

Сообщений: 12

06.10.2021, 21:58

 [ТС]

5

Алексей1153, печалька(



0



Эксперт .NET

11509 / 7857 / 1194

Регистрация: 21.01.2016

Сообщений: 29,464

07.10.2021, 06:23

6

Цитата
Сообщение от AKIV
Посмотреть сообщение

Да, это С++.

Нет, это — C++CLI. Это не С++.



0



OwenGlendower

Администратор

Эксперт .NET

15672 / 12631 / 5005

Регистрация: 17.03.2014

Сообщений: 25,715

Записей в блоге: 1

07.10.2021, 08:15

7

Лучший ответ Сообщение было отмечено AKIV как решение

Решение

AKIV, Parse статический член. Попробуйте через :: обратиться

C++
1
float::Parse



1



I want that when passing a certain enumeration property, the corresponding operator with type checking is output, here is a simple code example

#include <iostream>
#include <typeinfo>
//#include <memory>

enum MessageType : uint16_t
{
    Display,
    Warning,
    Error
};

#define MESSAGE(_MessageType, _Text)
    if((_MessageType == Display) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Display: "<<_Text;
    }
    else if((_MessageType == Warning) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Warning: "<<_Text;
    }
    else if ((_MessageType == Warning) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Error: "<<_Text;
    }
    else
        return

int main()
{
    MESSAGE(Display, "Text!"); // type name is not allowed
    return 0;
}

asked Mar 11, 2022 at 7:55

Anna_Wiz2006's user avatar

3

std::type_info::name returns a c-string. MessageType is not a string, its the name of a type. You can compare the string returned from typeid(_MessageType).name() to the string returned from typeid(MessageType).name().

However, identifiers starting with leading _ followed by capital letter are reseved. If you use them your code has undefined behavior. Moreover main is not void you must return an int.

And last but not least, you don’t need typeid when you can use constexpr if and std::is_same. A simple function instead of macro would also make it much easier to get a compiler error when the type does not match. Currently your check for the right type is made at runtime. I see no reason to use a macro here, the same could be achieved without one.

answered Mar 11, 2022 at 8:08

463035818_is_not_an_ai's user avatar

2

AKIV

0 / 0 / 0

Регистрация: 06.10.2021

Сообщений: 10

1

Ошибка — использование имени типа не допускается

06.10.2021, 20:29. Показов 2270. Ответов 6

Метки нет (Все метки)


Ошибка в строках где есть float. И в строке 18 textBox1->Text
Помогите пожалуйста, никак не пойму, что не так.

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
    private: void calculate()
    {
        switch (oper)
        {
        case 1:
            b = a + float.Parse(textBox1->Text);
            textBox1->Text = b.ToString();
            break;
        case 2:
            b = a - float.Parse(textBox1->Text);
            textBox1->Text = b.ToString();
            break;
        case 3:
            b = a * float.Parse(textBox1->Text);
            textBox1->Text = b.ToString();
            break;
        case 4:
                if (float.Parse(textBox1->Text) == 0)
                {
                    textBox1->Text = "Делить на 0 нельзя!";
                }
                else
                {
                    b = a / float.Parse(textBox1->Text);
                    textBox1->Text = b.ToString();
                }
            break;
        default:
            break;
        }
 
    }

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

фрилансер

4430 / 3941 / 858

Регистрация: 11.10.2019

Сообщений: 10,418

06.10.2021, 20:44

2

AKIV, а это точно C++ ?

у типа float нет метода Parse

1

0 / 0 / 0

Регистрация: 06.10.2021

Сообщений: 10

06.10.2021, 21:52

 [ТС]

3

Да, это С++. С помощью форм мне нужно создать калькулятор. И готовый код нам дали учителя, а это часть кода, но он не работает…

Добавлено через 5 минут
Алексей1153, Да, это С++. С помощью форм мне нужно создать калькулятор. И готовый код нам дали учителя, а это часть кода, но он не работает…

0

фрилансер

4430 / 3941 / 858

Регистрация: 11.10.2019

Сообщений: 10,418

06.10.2021, 21:53

4

Цитата
Сообщение от AKIV
Посмотреть сообщение

Да, это С++

не похоже )

что-то напутано — либо язык, либо учителя

0

0 / 0 / 0

Регистрация: 06.10.2021

Сообщений: 10

06.10.2021, 21:58

 [ТС]

5

Алексей1153, печалька(

0

Эксперт .NET

11044 / 7600 / 1176

Регистрация: 21.01.2016

Сообщений: 28,582

07.10.2021, 06:23

6

Цитата
Сообщение от AKIV
Посмотреть сообщение

Да, это С++.

Нет, это — C++CLI. Это не С++.

0

OwenGlendower

Администратор

Эксперт .NET

15226 / 12265 / 4902

Регистрация: 17.03.2014

Сообщений: 24,867

Записей в блоге: 1

07.10.2021, 08:15

7

Лучший ответ Сообщение было отмечено AKIV как решение

Решение

AKIV, Parse статический член. Попробуйте через :: обратиться

C++
1
float::Parse

1

I want that when passing a certain enumeration property, the corresponding operator with type checking is output, here is a simple code example

#include <iostream>
#include <typeinfo>
//#include <memory>

enum MessageType : uint16_t
{
    Display,
    Warning,
    Error
};

#define MESSAGE(_MessageType, _Text)
    if((_MessageType == Display) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Display: "<<_Text;
    }
    else if((_MessageType == Warning) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Warning: "<<_Text;
    }
    else if ((_MessageType == Warning) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Error: "<<_Text;
    }
    else
        return

int main()
{
    MESSAGE(Display, "Text!"); // type name is not allowed
    return 0;
}

asked Mar 11, 2022 at 7:55

Anna_Wiz2006's user avatar

3

std::type_info::name returns a c-string. MessageType is not a string, its the name of a type. You can compare the string returned from typeid(_MessageType).name() to the string returned from typeid(MessageType).name().

However, identifiers starting with leading _ followed by capital letter are reseved. If you use them your code has undefined behavior. Moreover main is not void you must return an int.

And last but not least, you don’t need typeid when you can use constexpr if and std::is_same. A simple function instead of macro would also make it much easier to get a compiler error when the type does not match. Currently your check for the right type is made at runtime. I see no reason to use a macro here, the same could be achieved without one.

answered Mar 11, 2022 at 8:08

463035818_is_not_a_number's user avatar

2

I want that when passing a certain enumeration property, the corresponding operator with type checking is output, here is a simple code example

#include <iostream>
#include <typeinfo>
//#include <memory>

enum MessageType : uint16_t
{
    Display,
    Warning,
    Error
};

#define MESSAGE(_MessageType, _Text)
    if((_MessageType == Display) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Display: "<<_Text;
    }
    else if((_MessageType == Warning) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Warning: "<<_Text;
    }
    else if ((_MessageType == Warning) && (typeid(_MessageType).name() == MessageType))
    {
        std::cout<<"Error: "<<_Text;
    }
    else
        return

int main()
{
    MESSAGE(Display, "Text!"); // type name is not allowed
    return 0;
}

asked Mar 11, 2022 at 7:55

Anna_Wiz2006's user avatar

3

std::type_info::name returns a c-string. MessageType is not a string, its the name of a type. You can compare the string returned from typeid(_MessageType).name() to the string returned from typeid(MessageType).name().

However, identifiers starting with leading _ followed by capital letter are reseved. If you use them your code has undefined behavior. Moreover main is not void you must return an int.

And last but not least, you don’t need typeid when you can use constexpr if and std::is_same. A simple function instead of macro would also make it much easier to get a compiler error when the type does not match. Currently your check for the right type is made at runtime. I see no reason to use a macro here, the same could be achieved without one.

answered Mar 11, 2022 at 8:08

463035818_is_not_a_number's user avatar

2

@brazenn

Доброго для, elelel.
Пробую разобраться как начать использовать Ваш проект, есть проблемы на этапе запуска примеров.
Пример draw_candles_rt — интеллисенс студии подчеркивает строку 53 в draw_candles_rt.cpp
LUACPP_STATIC_FUNCTION3(OnStop, OnStop, int) с предупреждением «Использование имени типа не допускается». Проект собирается, но запущенный в квике скрипт соответственно падает с воплем «Невозможно найти точку входа в процедуру… «
Где я накосячил, помогите разобраться, пожалуйста.
Собираю проект в VS2017, CMake там интегрирован, базовый пример запускается и работает нормально.
Собственно ругается компилятор на все макросы LUACPP_STATIC_FUNCTIONX, кроме LUACPP_STATIC_FUNCTION2

@elelel

Проверил с NMake от последней 2017, эту ошибку вызвать не удалось.
Эта проблема присутствует, если сначала сгенерировать проект студии через CMake, а потом компилировать студией? Т.е.

cd c:temp_drawcandlesrt_project
cmake.exe -G "Visual Studio 15 2017" c:pathtoqluacpp_tutorialdraw_candles_rt

@brazenn

Спасибо за мгновенную реакцию 👍 :)
Я пробовал по всякому, даже вручную проект в студии делал.
Интересно, если имя LUACPP_STATIC_FUNCTION3(OnStop, OnStop, int)
поменять вот так:
LUACPP_STATIC_FUNCTION3(OnStop, OnMyStop, int) то в другом примере все собирается и запускается.
Только как изменить LUACPP_STATIC_FUNCTION3(qluacpp_candles_cb, qluacpp_candles_cb, unsigned int)??

@brazenn

В VS2017 есть в меню команда CMake —build , так тоже пробовал..

@elelel

В вызове макроса LUACPP_STATIC_FUNCTION3(OnStop, OnMyStop, int) первый параметр — название функции, как она будет называться в Lua (OnStop), второй параметр — как называется функция C (в данном случае OnMyStop), которая будет вызываться как обработчик функции Lua, и тип аргумента этой функции (int). В примере функция C тоже называется OnStop и оно никак не должно мешать компиляции. В принципе, вы можете переименовать функцию C qluacpp_candles_cb в удобное вам имя в этом макросе и в том месте C кода где она объявляется/определяется. Но в идеале лучше найти, почему такая ошибка у вас возникает, ее быть не должно.

@brazenn

Но в идеале лучше найти, почему такая ошибка у вас возникает, ее быть не должно.
Согласен 100%
Попробую копать глубже.

@brazenn

class Complex
{
public:
Complex(float = 0.0, float = 0.0); //default constructor that uses default arg. in case no init. are in main
void getComplex(); //get real and imaginary numbers from keyboard
void sum(Complex, Complex); //method to add two complex numbers together
void diff(Complex, Complex); //method to find the difference of two complex numbers
void prod(Complex, Complex); //method to find the product of two complex numbers
void square(Complex, Complex); //method to change each complex number to its square
void printComplex(); //print sum, diff, prod, square and "a+bi" form

private:
float real; //float data member for real number (to be entered in by user)
float imaginary; //float data member for imaginary number (to be entered in by user)
};

void Complex::getComplex()
{
cout << "Enter real number: ";
cin >> real;
cout << "Enter imaginary number: ";
cin >> imaginary;
}

void Complex::sum(Complex, Complex)
{
float sum = 0.0;
sum = real + imaginary;
}

int main()
{
Complex c;
c.getComplex();
c.sum(Complex, Complex);
c.diff(Complex, Complex);
c.prod(Complex, Complex);
c.square(Complex, Complex);
c.printComplex();

return 0;
}

Я получаю сообщение об ошибке c.sum(Complex, Complex); внутри основного (вместе с c.diff, c.prod, а также c.square линии). Ошибка:

type name Complex is not allowed
а также too few arguments in function call

Я не имею права использовать операторы перегрузки для выполнения этой задачи. Что я должен сделать, чтобы решить эту проблему? Код был сокращен, чтобы показать соответствующие части. Еще раз спасибо.

-3

Решение

предположениеМетоды sum, diff и т. д. вашего класса не должны возвращать какой-либо результат или изменять экземпляры класса, которые ему передаются, а только отображают результат операции через std :: cout.

пожалуйста прочитать хотя бы http://www.cplusplus.com/doc/tutorial/functions/ чтобы понять, как значения передаются в функции (или в этом случае методы, см. http://www.cplusplus.com/doc/tutorial/classes/ )

Пока ты можешь объявлять метод только путем записи типов аргументов, вы должны указать идентификаторы в определении:
`

void Complex::sum(Complex c1, Complex c2)
{

}

Затем вы можете получить доступ к членам c1 и c2, как c1.imaginary
Более эффективный способ передать c1 и c2 будет использовать «константные ссылки» const Complex& c1, Тогда никакие копии объектов не будут сделаны.

На самом деле, методы sum, diff, prod можно сделать статическими, так как они не влияют на сложный объект c, который они вызывают в основном (следуя моему предположению). Так и должно быть

Complex::sum(c1, c2);

Если мое предположение неверно, и c.sum() на самом деле будет иметь влияние на с, я не понимаю, почему вам нужно два аргумента для метода. Вы можете просто добавить с1 к с. Тем не менее, метод должен быть вызван Add, Или вы должны вернуть сумму как новый объект, но метод был объявлен как void.

0

Другие решения

Других решений пока нет …

Я пытаюсь использовать АЦП с DMA с использованием STM32F407. Я хочу установить адрес памяти ADCValue в поток DMA x адрес памяти 0. Но я получаю эту ошибку:

type name is not allowed 

Эта часть находится в main

unsigned short ADCValue[1];
DMA2_Stream0->M0AR= uint32_t(&ADCValue);

И определение реестра

  __IO uint32_t M0AR;   /*!< DMA stream x memory 0 address register   */

2 ответа

Лучший ответ

Вы бросаете неправильный путь. Так должно быть:

DMA2_Stream0->M0AR = (uint32_t)&ADCValue;

Но поскольку это массив, & также не требуется. Массив автоматически распадется на указатель при использовании этого способа. Так что это будет делать:

DMA2_Stream0->M0AR = (uint32_t)ADCValue;


1

klutt
15 Ноя 2019 в 17:04

Либо:

unsigned short ADCValue ;
DMA2_Stream0->M0AR= (uint32_t)&ADCValue ;

Или

unsigned short ADCValue[1] ;
DMA2_Stream0->M0AR= (uint32_t)ADCValue ;

uint32_t(&ADCValue) или uint32_t(ADCValue) действительны в C ++, но не в C.


0

Clifford
15 Ноя 2019 в 17:19

Recommend Projects

  • React photo
    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo
    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo
    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo
    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo
    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo
    Laravel

    A PHP framework for web artisans

  • D3 photo
    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo
    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo
    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo
    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo
    Alibaba

    Alibaba Open Source for everyone

  • D3 photo
    D3

    Data-Driven Documents codes.

  • Tencent photo
    Tencent

    China tencent open source team.

Я пытаюсь поиграть с новым уроком класса в аргументах указателя, и я хочу, чтобы функции старшие и всеElse принимали указатель x, но когда я пытаюсь вызвать функцию с указателем pAge, он говорит об ошибке: Имя типа не допускается. Что не так?

#include <iostream>


int senior(int* x);
int everyoneElse(int* x);

using namespace std;

int main()
{
    int age(0);
    int* pAge(&age);
    cout<<"How old are you?"<<endl;
    cin>>age;
    if(age>59)
        senior(int* pAge);
    else
        everyoneElse(int* pAge);
    return 0;
}

int senior(int* x)
{

return *x;
}

int everyoneElse(int* x)
{

return *x;
}

22 фев. 2013, в 06:02

Поделиться

Источник

4 ответа

if(age>59)
    senior(int* pAge);
else
    everyoneElse(int* pAge);

Вы не можете включать имя типа при вызове функции. Изменить на:

if(age>59)
    senior(pAge);
else
    everyoneElse(pAge);

Josh Petitt
22 фев. 2013, в 05:10

Поделиться

senior(int* pAge);
else
    everyoneElse(int* pAge);

заменить

senior(pAge);
else
    everyoneElse(pAge);

Boyko Perfanov
22 фев. 2013, в 04:37

Поделиться

Когда вы вызываете функцию, вам не нужно указывать тип параметра, который вы передаете функции:

if(age>59)
    senior(pAge);
else
    everyoneElse(pAge);

Parametrs следует указывать по типу только в прототипе функции и функции тела (smth вроде этого:)

int senior(int* x)
{

return *x;
}

Anton Kizema
22 фев. 2013, в 06:26

Поделиться

Ещё вопросы

  • 1Проект Twitch Streamers freecodecamp — ПРОБЛЕМА ОТОБРАЖЕНИЯ
  • 0получить последний завершенный (некоторое условие) идентификатор при подсчете
  • 0проверка на соответствие правила не работает
  • 1Форма перенаправления в Javascript, передавая значения
  • 1Как я могу создать объект с ninject, используя kernel.Get для привязки с определенным атрибутом?
  • 0Ember js не обновляет список обновлений из модели в шаблоне
  • 0Выбор формы HTML и массивы, PHP
  • 1WPF — IsLargeArc = «false» больше не работает
  • 1Мемоизированный алгоритм резки стержней
  • 0Создать динамический класс с Angular
  • 0Как установить значение в конкретном байте?
  • 1Использование кучи Java в JTable char [], String и Objects
  • 0Как изменить фоновое изображение ТД?
  • 0Комбинированные фильтры изотопных переключателей
  • 1ActiveUp.Pop3Client Аутентификация результатов по ошибке протокола -ERR. 14
  • 0отправка свойства объекта в качестве параметра функции возвращает неопределенное
  • 1Дата по умолчанию 1970 в пандах
  • 0Событие jquery для документа с пространством имен не работает должным образом
  • 1Удалите специальные символы в столбце панд с помощью регулярных выражений
  • 0Медленный запрос с наличием на поле вычисления
  • 0Jquery: изменить конкретный родной класс, принадлежащий непосредственному родителю.
  • 1Ошибка сохранения и получения BLOB-объектов из базы данных SQL Oracle
  • 0Установить систему C на Cygwin
  • 0Получить номер устройства Android с помощью php
  • 1Сканирование 500 для несуществующих URL
  • 1Проблема Android / Eclipse
  • 1Как вернуться к коду после того, как я закончу со сценой JavaFX
  • 1Python читает CSV-строку из сжатого файла
  • 0Привязка изображения к сообщению, с которым оно связано
  • 0изменение ключа не запускается в файле js
  • 0Блокировка таблицы во время транзакции mysql
  • 1Python Matplotlib Heatmap Colorbar из прозрачного
  • 0Если условие не выполняется, вернуть данные для этого пользователя, иначе другой запрос
  • 0MySQL подсчет с ГДЕ и GROUP BY
  • 1XmlSerialization из списка объектов смешанного типа в c #
  • 0Базовый адрес exe?
  • 0Не удается просмотреть результат при объединении 3 таблиц
  • 0Выставленный литерал объекта службы Angular не обновляется?
  • 1Существует ли встроенный метод InputType или другой способ заставить виджет Android EditText отказываться принимать запятые?
  • 0фатальная ошибка C1083: не удается открыть файл включения: ‘tree.h’
  • 0Обновить первое вхождение значения во временном интервале
  • 0curl_easy_perform возвращает -1, когда сервер недоступен
  • 0Расшифровать объект JSON
  • 0Сообщение об ошибке загрузки файла Blueimp для недопустимых файлов
  • 1Uncaught TypeError: Не удалось выполнить ‘appendChild’ на ‘Node’: параметр 1 не относится к типу ‘Node’. на HTMLButtonElement.comm
  • 1Слушатель маркеров диспетчера чертежей Position_Changed
  • 0Проблема с компиляцией функции, которая возвращает строку &
  • 0C ++ std :: list <T> :: iterator Имеет ли итератор доступ к функциям-членам <T>?
  • 0Как получить фрагмент HTML через Applescript с помощью Javascript
  • 0Как поместить прямоугольник в середину

Сообщество Overcoder

@brazenn

Доброго для, elelel.
Пробую разобраться как начать использовать Ваш проект, есть проблемы на этапе запуска примеров.
Пример draw_candles_rt — интеллисенс студии подчеркивает строку 53 в draw_candles_rt.cpp
LUACPP_STATIC_FUNCTION3(OnStop, OnStop, int) с предупреждением «Использование имени типа не допускается». Проект собирается, но запущенный в квике скрипт соответственно падает с воплем «Невозможно найти точку входа в процедуру… «
Где я накосячил, помогите разобраться, пожалуйста.
Собираю проект в VS2017, CMake там интегрирован, базовый пример запускается и работает нормально.
Собственно ругается компилятор на все макросы LUACPP_STATIC_FUNCTIONX, кроме LUACPP_STATIC_FUNCTION2

@elelel

Проверил с NMake от последней 2017, эту ошибку вызвать не удалось.
Эта проблема присутствует, если сначала сгенерировать проект студии через CMake, а потом компилировать студией? Т.е.

cd c:temp_drawcandlesrt_project
cmake.exe -G "Visual Studio 15 2017" c:pathtoqluacpp_tutorialdraw_candles_rt

@brazenn

Спасибо за мгновенную реакцию 👍 :)
Я пробовал по всякому, даже вручную проект в студии делал.
Интересно, если имя LUACPP_STATIC_FUNCTION3(OnStop, OnStop, int)
поменять вот так:
LUACPP_STATIC_FUNCTION3(OnStop, OnMyStop, int) то в другом примере все собирается и запускается.
Только как изменить LUACPP_STATIC_FUNCTION3(qluacpp_candles_cb, qluacpp_candles_cb, unsigned int)??

@brazenn

В VS2017 есть в меню команда CMake —build , так тоже пробовал..

@elelel

В вызове макроса LUACPP_STATIC_FUNCTION3(OnStop, OnMyStop, int) первый параметр — название функции, как она будет называться в Lua (OnStop), второй параметр — как называется функция C (в данном случае OnMyStop), которая будет вызываться как обработчик функции Lua, и тип аргумента этой функции (int). В примере функция C тоже называется OnStop и оно никак не должно мешать компиляции. В принципе, вы можете переименовать функцию C qluacpp_candles_cb в удобное вам имя в этом макросе и в том месте C кода где она объявляется/определяется. Но в идеале лучше найти, почему такая ошибка у вас возникает, ее быть не должно.

@brazenn

Но в идеале лучше найти, почему такая ошибка у вас возникает, ее быть не должно.
Согласен 100%
Попробую копать глубже.

@brazenn

Здесь Form1 — это имя типа (класса) формы.
А обращаться нужно к объекту класса.
Где-то в программе должна быть объявлена переменная класса Form1, например так:

    Form1^ form = gcnew Form1();

далее можно будет получить значение textbox1 таким образом:

    System::String^ text = form->textbox1->Text;

Если обращение к textbox1 происходит внутри класса Form1, то вместо вместо имени переменной form используется this:

    System::String^ text = this->textbox1->Text;

При преобразовании в тип double следует учитывать, что текстовое поле может содержать произвольный текст и не всегда он может быть преобразован в число с плавающей точкой.
Поэтому делать это нужно так:

    try
    {
        auto d = System::Convert::ToDouble(form->textbox1->Text);
    }
    catch (FormatException e) 
    {
        // Обработка исключения;
    }
    catch (OverflowException e) 
    {
        // Обработка исключения;
    }

Возможно, вам также будет интересно:

  • Ошибка исполняемый файл не найден direct3d 12
  • Ошибка исполняемый файл для отладки не существует
  • Ошибка исполнительного устройства электромагнитного клапана деактивации отверстия
  • Ошибка исполнительного устройства электромагнитного клапана деактивации канала
  • Ошибка исполнительного устройства с2000 сп4 220

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии