elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ¿Qué es este warning?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Qué es este warning?  (Leído 2,882 veces)
SARGE553413

Desconectado Desconectado

Mensajes: 176


Ver Perfil
¿Qué es este warning?
« en: 31 Agosto 2014, 19:07 pm »

Hola a todos.

Estoy compilando un programa escrito en C++/CLI y me sale un warning que no entiendo:

Código:
a firma de un miembro no privado contiene un tipo privado de ensamblado de 'X'
vea la declaración de 'X'

No entiendo por qué sale este warning, por más que miro no veo ningún atributo ni método private que esté siendo usado como public.

¿Alguien sabe que ocurre?

Saludos, gracias.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: ¿Qué es este warning?
« Respuesta #1 en: 31 Agosto 2014, 19:59 pm »

El aviso dice no privado, no dice que la declaración deba ser 'Public', también podría ser otra declaración visible como 'Friend'.

según parece, intuyo que estás intentando parametizar un Type en la firma de algún método (u otro miembro, como podría ser un delegado) pero te está sugeriendo que no hagas visible dicho miembro ya que el Type de su firma no se podrá exponer al ser privado,
en inglés ayudaría más a entender el mensaje de error.

¿No te indica la linea donde se encuentra la firma del miembro que produce el conflicto?.

¿No puedes modificar la visibilidad de 'X?.

Postea el código de "X".

PD: Te sugiero usar la IDE en inglés, no vas a encontrar información para resolver warnings/errors en Castellano.

saludos!


« Última modificación: 31 Agosto 2014, 20:10 pm por Eleкtro » En línea

SARGE553413

Desconectado Desconectado

Mensajes: 176


Ver Perfil
Re: ¿Qué es este warning?
« Respuesta #2 en: 31 Agosto 2014, 23:52 pm »

EDIT: Antes de leer todo el tocho de abajo, he probado a, en lugar de poner public a todas las clases, quitárselo a todas y parece que funciona pero sigo sin entender que pasa. Ahora solo me quedan warnings de 'variable local sin referencia', pero son de excepciones que capturo y re-creo con el mensaje que yo quiero, así que no creo que eso sea muy grave.

según parece, intuyo que estás intentando parametizar un Type en la firma de algún método (u otro miembro, como podría ser un delegado) pero te está sugeriendo que no hagas visible dicho miembro ya que el Type de su firma no se podrá exponer al ser privado,
en inglés ayudaría más a entender el mensaje de error.

No se exactamente a qué te refieres, pero este warning me sale (entre otras cosas) en las líneas que son las cabeceras de algunos métodos (y como parámetros paso otras clases, no se si te refieres a esto con 'parametrizar')

¿No te indica la linea donde se encuentra la firma del miembro que produce el conflicto?.

Sí, pero son muchas, unas 50 o más.

¿No puedes modificar la visibilidad de 'X?.

¿De la clase 'X'? He probado a ponerles 'public' a todas las clases, pero lo mismo.

Postea el código de "X".

Es muy largo, intentaré quitar lo que no sea importante para este caso: (indico en qué línea sale el warning)

Warning en cuestión: 'ChangeSpeed': la signatura de un miembro no privado contiene un tipo privado de ensamblado de 'motor'
1>          e:\mis documentos\...\motor.h(30) : vea la declaración de 'motor'
Código:
#pragma once

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;

/// <summary>
/// Resumen de ChangeSpeed
/// </summary>
public ref class ChangeSpeed : public System::Windows::Forms::Form
{
public:
ChangeSpeed(motor ^m) //<=====Línea 16 (Warning)
{
InitializeComponent();
//
//TODO: agregar código de constructor aquí
//
}
.....
};

Código:
ref class motor
{ //<==== Línea 30 (Warning)
public:
static motor^ getInstance();

        ....
        ....
};
#endif

PD: Te sugiero usar la IDE en inglés, no vas a encontrar información para resolver warnings/errors en Castellano.

Warning en inglés:
signature of non-private member contains assembly private native typ

He buscado info en la web de microsoft, pero sigo sin entender que es es de la "firma" o "signatura" de una clase...

Saludos, y gracias.
« Última modificación: 31 Agosto 2014, 23:59 pm por SARGE553413 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: ¿Qué es este warning?
« Respuesta #3 en: 1 Septiembre 2014, 06:14 am »

Viendo el código me doy cuenta que no te puedo ayudar mucho más, mi entendimiento de C++ es poco, pero el aporte del código servirá para captar la atención de alguno que esté mejor entendido que yo,
de todas formas quizás el problema vaya por > este < camino.

PD: Por parametizar me refería a usar la Class "motor" como parámetro en la firma de "X" miembro.

EDITO:

He buscado info en la web de microsoft, pero sigo sin entender que es es de la "firma" o "signatura" de una clase...

The signature of an instance constructor consists of the type and kind (value, reference, or output) of each of its formal parameters, considered in the order left to right. The signature of an instance constructor specifically does not include the params modifier that may be specified for the right-most parameter.

Saludos!
« Última modificación: 1 Septiembre 2014, 06:20 am por Eleкtro » En línea

6666

Desconectado Desconectado

Mensajes: 146


Wikileaks.org


Ver Perfil
Re: ¿Qué es este warning?
« Respuesta #4 en: 1 Septiembre 2014, 07:19 am »

Como que tendrías que declarar las funciones fuera de los miembros, y luego llamar a la función respecto a los permisos.
y referirte a el correctamente:

pseudo code:

public ref class ChangeSpeed : public System::Windows::Forms::Form
   {
private:
char m_numbers[type];
int suma;

public:
void ChangeSpeedexample(motor ^m);
int ChangeSpeedexample2(int);
         }


void ChangeSpeed::ChangeSpeedexample2(String^ type, String^ number)
{
    m_numbers[type] = number;
}

void ChangeSpeed::ChangeSpeedexample(motor ^m) {
         InitializeComponent();
         //
         //TODO: agregar código de constructor aquí
         //
}      

ChangeSpeed^ p = ref new ChangeSpeedexample("un ejemplo");
p->ChangeSpeedexample2("sa");
« Última modificación: 1 Septiembre 2014, 07:25 am por 6666 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda warning php
PHP
kakashi20 6 5,937 Último mensaje 17 Septiembre 2009, 19:25 pm
por Jubjub
warning en C++
Programación C/C++
misterharry 9 4,918 Último mensaje 27 Junio 2010, 10:42 am
por leogtz
Warning con sesiones
PHP
sexto 2 2,051 Último mensaje 4 Noviembre 2010, 09:37 am
por sexto
Ayuda con este problema "[Warning] built-in function 'y0' declared as non-functi « 1 2 »
Programación C/C++
MrCookie40 10 6,440 Último mensaje 29 Mayo 2017, 10:32 am
por MAFUS
[Pregunta]: ¿Qué significa este warning
Desarrollo Web
Leguim 2 2,150 Último mensaje 5 Noviembre 2019, 17:30 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines