Другие языки программирования и технологии

Реально ль в С++ сделать, чтоб название переменной и функции были одинаковыми?

int size;
int size()
{
return size;
}

Если да, то как это сделать?
#include <iostream>
namespace usr {
size_t size(size_t n) {
return n << 1;
}
}
int main() {
size_t size = 10;
std::cout << "Size: " << size << '\n';
size = usr::size(size);
std::cout << "Size: " << size << '\n';
std::cin.get();
}
Егор Егоров
Егор Егоров
63 189
Лучший ответ
Нет, потому что выражение
(void*)(&size)
не будет однозначно резолвиться.
А зачем, собственно? Есть регистр символов, подчеркивания, принципы именования и пространства имен для разведения подобных ситуаций. В названии функции желательно делать глагол, вроде getSize.
AJ
Aslan Jangirhan
68 280
Евгений Тельманов резолвиться=реализовываться
Павел Андрианов "Нет, потому что выражение
(void*)(&size)
не будет однозначно резолвиться."

Да-да. Когда запрещали функции и переменной иметь одно и то же имя, руководствовались именно этим!
Сделай так

int size;

int Size()
{
return size;
}
нет, функция и переменная - равноправные сущности. Имя должно быть уникально.

Можно развести с помощью namespace'ов, но, подозреваю, это будет не сильно интересно.

Ещё можно играться с разными областями видимости. То есть вот так сработает:
int size()
{
int size = 5;
return size;
}
Денис Дротенок
Денис Дротенок
36 571
Не знаю, как же поведёт себя компилятор, но попробуй через дефайн.
#define size = d_size

int d_size

return size

По идее, он должен игнорить функции, так как ты не указал скобочки в дефайне.
Ty Kl
Ty Kl
23 106
Я не спец в с++, но кажется тут все на обычном С зациклились. А ведь С++ объектно ориентированный, разве не так? Разве частью объекта не может быть функция и переменная? Насколько я знаю, частью объекта может быть тысяча функций и тысяча переменных...
AK
Alexey Kravchenko
3 066