novamente: só porque você não recebeu um erro de compilação não significa que sua classe template foi incluída - onde está o objeto da classe CData ? - Vejo um modelo de declaração, mas onde se encontra tal variável? - objeto ?
se você "precisa vitalmente" resolver a questão, então faça um código totalmente reprodutível - completamente sem ..... comentários a seu critério e novamente, não entendo a lógica de usar a substituição de macros
talvez esse seja o ponto, raramente uso macros, pelo menos se eu usar uma macro eu entendo no que ela eventualmente resulta, em seu exemplo é um mistério para mim
Sim, você está certo, o objeto não foi criado, então eu verifiquei
#property copyright"Copyright 2018, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict#define templ(T) template<typename T>// задача данного макроса определять int bool double и т.д#define Vosmas(a,b,c,d,e) /*return*/(Fun(a,b,c,d,e))//a- массив, //b- номер строки если нужен//c,d- номера измерений если нужны и массив многомерныйint Mas[2],Mas2[2][2],Mas3[2][2][2];
intOnInit()
{int Perem=0;
Perem=Vosmas(Mas,0,0,0,3);
Print("Vosmas: ",Perem);//результат 3return(INIT_SUCCEEDED);}
class CData{
public:CData(){};~CData(){};
int Total(int &mas[] ,int y1=0){return(mas[y1]);}
int Total(int &mas[][] ,int y1=0/*,int y=0*/){return(mas[y1][0]);}
int Total(int &mas[][][],int y1=0/*,int y=0,int u=0*/){return(mas[y1][0][0]);}};
templ(T) T Fun(T &a[],int b,int c,int d,int e){a[b]=e; return (a[b]);}
Não vejo porque preciso de tal linguagem de programação e porque precisaria de tais classes se não posso sequer sobrecarregá-las, tudo está morto e estático.
Sim, você está certo, o objeto não foi criado, foi assim que eu verifiquei
Como resultado, a sobrecarga não é possível, o que é um menos, então por que eu precisaria de tal linguagem de programação e por que eu precisaria de tais classes se eu não posso nem mesmo sobrecarregar tudo está morto e estático?
Sério?
Você não sabia disso.
Como as pessoas escrevem coisas complicadas então? Está além da compreensão...
A tarefa da macro é chamar a função da classe e passar o valor para esta função, e como a macro pode tomar uma matriz de qualquer dimensão, estou tentando fazer um esquema desse tipo. Claro que muitas pedras, mas preciso chamar a função da classe e não sei como chamar uma função simples da classe (no meu caso, o método Total não tem descrição) não está escrito no Help, há exemplos complexos relacionados à transferência.
Aqui está um exemplo de uma macro que toma uma variedade de qualquer dimensão, é ruim que os desenvolvedores tenham cortado essas características trabalho normal com elementos complexos
Você pode fazer isso sem um modelo, mas é melhor com um modelo.
Eu não queria, mas abri o terminal, aqui está o seu exemplo:
#property strict#property show_inputs
//+------------------------------------------------------------------+//#define templ(T) template<typename T>// задача данного макроса определять int bool double и т.д#define Vosmas(a,b,c,d,e) 5int Mas[2],Mas2[2][2],Mas3[2][2][2];//объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)//+------------------------------------------------------------------+voidOnStart()
{
int Perem=0;
Perem=Vosmas(Mas,0,0,0,0);
Print("Vosmas: ",Perem);
Perem=Vosmas(Mas2,0,0,0,0);
Print("Vosmas: ",Perem);
Perem=Vosmas(Mas3,0,0,0,0);
Print("Vosmas: ",Perem);//во всех случаях результат 5
}
//+------------------------------------------------------------------+
Comentei a substituição de macros, o código compila, então não funciona? perguntei três vezes por que um modelo que não é usado e por que uma substituição de macros que apenas duplica uma palavra-chave do idioma
Não apenas não entendo o que é necessário, mas não entendo o que fazer com códigos que não compilam parte deles.
HH: Se você está tentando fazer uma matriz multidimensional usando este modelo ou uma macro - imho, não vai funcionar, encontre uma solução pronta através da busca no fórum e use
ZS: Eu definitivamente desisto, não é uma pergunta para mim.
Seric29: Como escrever uma carta para os desenvolvedores do mql4 como ver o código do compilador, posso adicionar mais recursos para que não seja tão estático?
Como as pessoas escrevem coisas complexas então? Está além da compreensão...
Bem, quão complicado você pode escrever aqui se o acesso à memória for negado para trabalhar com funções dinâmicas, mesmo a sobrecarga não é possível, então você tem que escrever mais 1000 linhas de código para completar seu programa, iniciar loops e variáveis extras, portanto a performance do programa é 0.
Bem, o que é tão difícil de escrever se o acesso à memória for negado, você não pode trabalhar com funções dinâmicas, mesmo a sobrecarga é impossível, então você tem que escrever mais 1000 linhas de código para terminar seu programa, iniciar loops e variáveis extras, então o desempenho do programa é 0.
Bem, se a estrutura do programa estiver inicialmente morta, sim, não há como.
O programa está escrito bem no final. Primeiro, uma abordagem cuidadosa da estrutura do programa.
Sinceramente, não entendo porque você está lutando há meses com algo que é feito de maneira diferente, e em cinco minutos. Eu realmente não entendo...
Eu não queria, mas abri meu terminal, aqui está o seu exemplo:
Comentei a macro substituição, o código compila, então não funciona... Perguntei três vezes por que um padrão que não é usado e por que uma macro substituição que apenas duplica uma palavra-chave do idioma
Não apenas não entendo o que é necessário, mas não entendo o que fazer com códigos que não compilam parte deles.
HH: Se você está tentando fazer uma matriz multidimensional usando este modelo ou uma macro - imho, não vai funcionar, encontre uma solução pronta através da busca no fórum e use
ZS: Eu definitivamente desisto, não é uma pergunta para mim.
Aqui dei um exemplo de que o macroVosmas aceita quaisquer matrizes. A única solução para matrizes é usar matrizes da mesma dimensão, não estou falando de todos os tipos de ponteiros e referências e funções dinâmicas que funcionam em C++, e até mesmo o problema de produzir uma função em C++, especificar o tipo e outras coisas é uma linguagem muito estática, não é possível escrever as coisas realmente legais aqui.
Aqui dei um exemplo de que o macroVosmas aceita quaisquer matrizes. A única solução para matrizes é usar matrizes da mesma dimensão, não estou falando de todo tipo de ponteiros e referências e funções dinâmicas que funcionam em C++, e também o problema de derivar uma função em C++ especificar tipo e outros disparates em linguagem muito estática e tudo mais, não se pode escrever coisas muito legais aqui.
Comece a ler o básico de C++, MQL tem diferenças mínimas!
ZS: parabéns, você escreveu uma macro universal que pode fazer tudo, arrays são a coisa mais fácil de "lidar", exemplo para reproduzir:
#property strict#define Vosmas(a,b,c,d,e) 5int Mas[2],Mas2[2][2],Mas3[2][2][2];//объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)//+------------------------------------------------------------------+voidOnStart()
{
int Perem=0;
Perem=Vosmas(Mas,0,0,0,0);
Print("Vosmas: ",Perem);
Perem=Vosmas(Mas2,0,0,0,0);
Print("Vosmas: ",Perem);
Perem=Vosmas(Mas3,0,0,0,0);
Print("Vosmas: ",Perem);//во всех случаях результат 5class CA{public: int a;} A;
class CB{public: int b;} B;
class CC{public: int c;} C;
class CD{public: int d;} D;
class CE{public: int e;} E;
Perem=Vosmas(A,B,C,D,E); Print("Vosmas: ",Perem);//во всех случаях результат 5
Perem=Vosmas("УРА","Я","УЧУ","MQL","4"); Print("Vosmas: ",Perem);//во всех случаях результат 5
}
//+------------------------------------------------------------------+
comece a ler o básico de C++, MQL tem diferenças mínimas!
ZS: parabéns, você escreveu uma macro universal que pode fazer tudo, arrays são a coisa mais fácil de "lidar", exemplo a seguir:
Bem, eu queria controlar isso passando uma matriz para uma macro e na macro chamar uma função sobrecarregável e retornar o resultado, parece uma tarefa primitiva mas quando você chama uma função sobrecarregável em uma macro, ela lança um aviso de que a função 3 se revela que na macro você precisa escrever um critério que determinará qual das funções sobrecarregáveis chamar e aqui novamente você tem que perguntar como fazer esta verificação, em geral a idéia falha.
novamente: só porque você não recebeu um erro de compilação não significa que sua classe template foi incluída - onde está o objeto da classe CData ? - Vejo um modelo de declaração, mas onde se encontra tal variável? - objeto ?
se você "precisa vitalmente" resolver a questão, então faça um código totalmente reprodutível - completamente sem ..... comentários a seu critério e novamente, não entendo a lógica de usar a substituição de macros
talvez esse seja o ponto, raramente uso macros, pelo menos se eu usar uma macro eu entendo no que ela eventualmente resulta, em seu exemplo é um mistério para mim
Sim, você está certo, o objeto não foi criado, então eu verifiquei
Não vejo porque preciso de tal linguagem de programação e porque precisaria de tais classes se não posso sequer sobrecarregá-las, tudo está morto e estático.
Sim, você está certo, o objeto não foi criado, foi assim que eu verifiquei
Como resultado, a sobrecarga não é possível, o que é um menos, então por que eu precisaria de tal linguagem de programação e por que eu precisaria de tais classes se eu não posso nem mesmo sobrecarregar tudo está morto e estático?
Sério?
Você não sabia disso.
Como as pessoas escrevem coisas complicadas então? Está além da compreensão...
A tarefa da macro é chamar a função da classe e passar o valor para esta função, e como a macro pode tomar uma matriz de qualquer dimensão, estou tentando fazer um esquema desse tipo. Claro que muitas pedras, mas preciso chamar a função da classe e não sei como chamar uma função simples da classe (no meu caso, o método Total não tem descrição) não está escrito no Help, há exemplos complexos relacionados à transferência.
Aqui está um exemplo de uma macro que toma uma variedade de qualquer dimensão, é ruim que os desenvolvedores tenham cortado essas características trabalho normal com elementos complexos
Você pode fazer isso sem um modelo, mas é melhor com um modelo.
Eu não queria, mas abri o terminal, aqui está o seu exemplo:
Comentei a substituição de macros, o código compila, então não funciona? perguntei três vezes por que um modelo que não é usado e por que uma substituição de macros que apenas duplica uma palavra-chave do idioma
Não apenas não entendo o que é necessário, mas não entendo o que fazer com códigos que não compilam parte deles.
HH: Se você está tentando fazer uma matriz multidimensional usando este modelo ou uma macro - imho, não vai funcionar, encontre uma solução pronta através da busca no fórum e use
ZS: Eu definitivamente desisto, não é uma pergunta para mim.
Como escrever uma carta para os desenvolvedores do mql4 como ver o código do compilador, posso adicionar mais recursos para que não seja tão estático?
Não no caso de colocar calças sobre sua cabeça :)
Sério?
Você não sabia disso.
Como as pessoas escrevem coisas complexas então? Está além da compreensão...
Bem, quão complicado você pode escrever aqui se o acesso à memória for negado para trabalhar com funções dinâmicas, mesmo a sobrecarga não é possível, então você tem que escrever mais 1000 linhas de código para completar seu programa, iniciar loops e variáveis extras, portanto a performance do programa é 0.
Bem, o que é tão difícil de escrever se o acesso à memória for negado, você não pode trabalhar com funções dinâmicas, mesmo a sobrecarga é impossível, então você tem que escrever mais 1000 linhas de código para terminar seu programa, iniciar loops e variáveis extras, então o desempenho do programa é 0.
Bem, se a estrutura do programa estiver inicialmente morta, sim, não há como.
O programa está escrito bem no final. Primeiro, uma abordagem cuidadosa da estrutura do programa.
Sinceramente, não entendo porque você está lutando há meses com algo que é feito de maneira diferente, e em cinco minutos. Eu realmente não entendo...
Eu não queria, mas abri meu terminal, aqui está o seu exemplo:
Comentei a macro substituição, o código compila, então não funciona... Perguntei três vezes por que um padrão que não é usado e por que uma macro substituição que apenas duplica uma palavra-chave do idioma
Não apenas não entendo o que é necessário, mas não entendo o que fazer com códigos que não compilam parte deles.
HH: Se você está tentando fazer uma matriz multidimensional usando este modelo ou uma macro - imho, não vai funcionar, encontre uma solução pronta através da busca no fórum e use
ZS: Eu definitivamente desisto, não é uma pergunta para mim.
Aqui dei um exemplo de que o macroVosmas aceita quaisquer matrizes. A única solução para matrizes é usar matrizes da mesma dimensão, não estou falando de todos os tipos de ponteiros e referências e funções dinâmicas que funcionam em C++, e até mesmo o problema de produzir uma função em C++, especificar o tipo e outras coisas é uma linguagem muito estática, não é possível escrever as coisas realmente legais aqui.
Aqui dei um exemplo de que o macroVosmas aceita quaisquer matrizes. A única solução para matrizes é usar matrizes da mesma dimensão, não estou falando de todo tipo de ponteiros e referências e funções dinâmicas que funcionam em C++, e também o problema de derivar uma função em C++ especificar tipo e outros disparates em linguagem muito estática e tudo mais, não se pode escrever coisas muito legais aqui.
Comece a ler o básico de C++, MQL tem diferenças mínimas!
ZS: parabéns, você escreveu uma macro universal que pode fazer tudo, arrays são a coisa mais fácil de "lidar", exemplo para reproduzir:
comece a ler o básico de C++, MQL tem diferenças mínimas!
ZS: parabéns, você escreveu uma macro universal que pode fazer tudo, arrays são a coisa mais fácil de "lidar", exemplo a seguir:
Bem, eu queria controlar isso passando uma matriz para uma macro e na macro chamar uma função sobrecarregável e retornar o resultado, parece uma tarefa primitiva mas quando você chama uma função sobrecarregável em uma macro, ela lança um aviso de que a função 3 se revela que na macro você precisa escrever um critério que determinará qual das funções sobrecarregáveis chamar e aqui novamente você tem que perguntar como fazer esta verificação, em geral a idéia falha.