XML овладёваные люди.
Как вы относитесь к тем, чей мозг овладёван XML? Может их уже изолировать надо?
Вот такой вопрос:
Как я понимаю даже в java следующее делать нельзя
class A{
public object getValue(){ ... }
}
class B extends A{
public B getValue() { ... }
}
из-за одинаковых сигнатур...
почему же следующее нормально собирается?
class B implements Clonable{
public B clone(){
return (B)base.clone();
}
}
http://btanks.sourceforge.net/ru/
>>> Ссылка на сайт (sourceforge.net)
1: _bstr_t reply(br, FALSE); 2: 3: string szreply; 4: szreply.assign((char*)reply, reply.length()); что происходит в 4 строке. как такое может быть? имею ввиду это просто какая-то кривая магия или так делать положенно?
C:\temp>cl /v
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
----------- a.cpp ----------------
#include <iostream>
using namespace std;
class A{
public:
void a(){
cout << "A" << endl;
}
virtual void b(){
a();
}
};
class B{
};
class B : public A{
public:
void a(){
cout << "B" << endl;
}
void b(){
a();
}
virtual void b(){
a();
}
};
int main(int argc, char ** argv){
A * a = new B();
a->b();
return 0;
}
--------- / --------------------
C:\temp> cl a.cpp
a.cpp(20) : error C2011: 'B' : 'class' type redefinition
a.cpp(16) : see declaration of 'B'
a.cpp(36) : error C2440: 'initializing' : cannot convert from 'B *' to 'A *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style castПеречитываю Джэфф Элджер "C++" (Jeff Alger C++ for real programmers). ISBN 5-8046-0045-1
Нашел песдатую штуку "Указатель на переменную класса" (стр 267). Следующий пример:
class Foo{
private:
int x;
public:
static int & Foo::*X() { return &Foo::x; }
};
Foo f = new Foo; // тут видать у него опечатка
int& Foo::*pm = Foo::X(); // вся магия нах. вычисляет смещение для int
int& i = f->*pm; // применяет смещение к экземпляру
полная магия нах. хочу такое сделать, но компиляторы вопят:
cannot declare pointer to 'int&'
ладно. читаю у него дальше: "Все эти int& можно заменить на int*" -
меняю - получаю:
test.cpp: In static member function 'static int* Test::* Test::X()':
test.cpp:5: error: cannot convert 'int Test::*' to 'int* Test::*' in
return
test.cpp: In function 'int main(int, char**)':
test.cpp:10: error: cannot declare pointer to 'int&'
** в общем хер с ним 5-ой строки уже хватает **
test.cpp:10: error: cannot convert 'int* Test::*' to 'int Test::*' in
initializa
tion
test.cpp:11: error: invalid conversion from 'int' to 'int*'
make: *** [all] Ошибка 1
------------------
мой пример в аттачменте, вообще у меня волосы дыбом лезут во первых
использовать Foo:: внутри class Foo:: - имхо это ж вообще лажа. Во
вторых интересно такое вообще можно сделать? ты сталкивался с такой
фиговиной?
пробовал несколько разных g++
Что это фантазии затуманеного чем-то мозга Джеффа? Опечатка или я туплю? Кто-нибудь сталкивался с таким? И что это за дикий синтаксис. (MSVC ругается после замены int& на int*:
test.cpp(5) : error C2440: 'return' : cannot convert from 'int Test::*' to 'int *Test::* '
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
test.cpp(10) : error C2636: '<Unknown>' : pointer to reference member is illegal| ← предыдущие | следующие → |