**Use like this in Your Activity**
btnsub.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//Initialize soap request + add parameters
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);
//Use this to add parameters
request.addProperty("pincode",txtpincode.getText().toString());
request.addProperty("bg",bloodgroup.getSelectedItem().toString());
//Declare the version of the SOAP request
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
try {
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
//this is the actual part that will call the webservice
androidHttpTransport.call(SOAP_ACTION1, envelope);
// Get the SoapResult from the envelope body.
SoapObject result = (SoapObject)envelope.getResponse();
Log.e("result data", "data"+result);
SoapObject root = (SoapObject) result.getProperty(0);
// SoapObject s_deals = (SoapObject) root.getProperty(0);
//SoapObject s_deals_1 = (SoapObject) s_deals.getProperty(0);
//
System.out.println("********Count : "+ root.getPropertyCount());
value=new ArrayList<Detailinfo>();
for (int i = 0; i < root.getPropertyCount(); i++)
{
SoapObject s_deals = (SoapObject) root.getProperty(i);
Detailinfo info=new Detailinfo();
info.setFirstName( s_deals.getProperty("Firstname").toString());
info.setLastName( s_deals.getProperty("Lastname").toString());
info.setDOB( s_deals.getProperty("DOB").toString());
info.setGender( s_deals.getProperty("Gender").toString());
info.setAddress( s_deals.getProperty("Address").toString());
info.setCity( s_deals.getProperty("City").toString());
info.setState( s_deals.getProperty("State").toString());
info.setPinecode( s_deals.getProperty("Pinecode").toString());
info.setMobile( s_deals.getProperty("Mobile").toString());
info.setEmail( s_deals.getProperty("Email").toString());
info.setBloodgroup( s_deals.getProperty("Bloodgroup").toString());
info.setAdddate( s_deals.getProperty("Adddate").toString());
info.setWaight(s_deals.getProperty("waight").toString());
value.add(info);
}
} catch (Exception e) {
e.printStackTrace();
}
Intent inten=new Intent(getApplicationContext(),ComposeMail.class);
//intent.putParcelableArrayListExtra("valuesList", value);
startActivity(inten);
}
}).start();
}
});
Это поведение определено стандартом, и, насколько я могу судить, gcc
здесь корректно, если мы посмотрим на проект C ++ standard section 13.1
Перегружаемые объявления paragraph 3 говорит:
[...] - объявления параметров, которые отличаются только наличием или отсутствием константы и / или летучих, эквивалентны. То есть, константные и неустойчивые типы-спецификаторы для каждого типа параметра игнорируются при определении того, какая функция объявляется, определяется или вызывается.
blockquote>и предоставляет этот пример:
[ Example: typedef const int cInt; int f (int); int f (const int); // redeclaration of f(int) int f (int) { /* ... */ } // definition of f(int) int f (cInt) { /* ... */ } // error: redefinition of f(int) —end example ]
и некоторые подробности, поясняющие, что это относится только к внешним cv квалификаторам ( ] emphasis mine ):
Только конструкторы типа const и volatile на самом внешнем уровне спецификации типа параметра игнорируются таким образом; const и volatile, специфицированные по типу спецификаций параметров, являются значительными и могут использоваться для различения перегруженных деклараций функций.123 В частности, для любого типа T, «указатель на T», «указатель на const T» и «указатель на volatile T "считаются отдельными типами параметров, как« ссылка на T »,« ссылка на const T »и« ссылка на volatile T. »
blockquote>, и насколько я могу судить это относится и к функциям шаблона в классах шаблонов, а также из раздела
14.8
Специализация шаблонов функций , в частности14.8.3
Разрешение перегрузки , которое гласит:[...] Полный набор функций-кандидатов включает в себя все синтезированные объявления и все перегруженные функции без шаблона с тем же именем. Синтезированные объявления обрабатываются как любые другие функции в остальной части разрешения перегрузки, за исключением случаев, явно указанных в 13.3.3.144
blockquote>
Это ошибка, потому что она предотвращает использование легитимного кода:
/* API declaration */
void f(int);
/* Implementation */
void f(const int x) /* my business: x is my local var and I want it const */
{
}
Не могу поверить, что кто-то будет кодировать их путь, чтобы диагностировать это как проблему.
Кстати, GCC, который не жалуется на это, имел предупреждение об этой ситуации. Возможно, он все еще делает:
void f(int func_ptr(void));
void f(int (*func_ptr)(void))
{
}
Это чисто стилистическая несогласованность, которая не служит цели.