|
|
|
| всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table[n], а вот сам метод:
int copyTable(int a, int b)
{
int i,j;
bd table[n];
for (a-=1; a<b; a++)
table[a]=table[j];
return 0;
} |
суть метода состоит в том, чтобы заменять элементы bd от а до b элементом table[j].
вызов метода происходит что-то типа:
так вот я не понимаю как сопоставить эти table[j], тоесть чтобы при вызове метода таким способом он понимал, что заменять нужно на тот элемент, из-под которого вызывали (если можна так выразиться).
в идеале задание звучит так:
Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
если кто подскажет как сделать через присваивание буду весьма благодарен | |
|
|
|
|
|
|
|
для: BenderRR
(18.10.2011 в 19:36)
| | Раз дело происходит в методе, вы всегда можете обратиться к "элементу, из-под которого вызвали" при помощи ссылки this. Или тут в другом дело? | |
|
|
|
|
|
|
|
для: cheops
(18.10.2011 в 19:41)
| | с this не знаком, почитав про него, мне показалось, что это немного не то. но вы правильно поняли, что мне нужно. а можете показать, как именно это применить на моем примере? может я что-то не так понял.. | |
|
|
|
|
|
|
|
для: BenderRR
(18.10.2011 в 19:36)
| | вот мне помогли на другом форуме, только без комментов. может кто разберется?
#include <iostream>
struct StructT;
struct Proxy
{
StructT & ref;
int i;
int j;
Proxy(StructT & arg, int a, int b): ref(arg), i(a), j(b)
{}
StructT & operator= (double arg)
{
std::cout << "Proxy (" << i << ", " << j << ")::" << "operator=(" << arg << ")\n";
return ref;
}
};
struct StructT
{
Proxy operator()(int i, int j)
{
std::cout << "operator()(" << i << ", " << j << ")\n";
return Proxy(*this, i, j);
}
};
int main()
{
StructT bd;
bd(3,5) = .5;
return 0;
} |
| |
|
|
|
|
|
|
|
для: BenderRR
(18.10.2011 в 22:36)
| | Вам предложили перезагрузить оператор = и оператор круглые скобки (), в C++ операторам можно назначить свои собственные действия. Кстати, заметьте
return Proxy(*this, i, j); | пришлось использовать ссылку this на текущий объект структуры StructT, разименовав её при помощи *. Без this никак не обойтись, когда вам нужно обратиться к текущему объекту. | |
|
|
|