Quantcast
Channel: vinxru
Viewing all articles
Browse latest Browse all 319

C++

$
0
0
Кажется, что можно сделать красивее, но понять не могу. Ниже написан класс, который содержит метод find. Если мы работаем с объектом по const-ссылке или указателю, то метод должн возвращать const указатель. Если объект не const, то соответственно метод должен возвращать не const указатель, что бы мы потом могли изменить значение.

void test1(const MyClass& a) {
  const Item* a = a.find(12);
}

void test2(MyClass& a) {
  Item* v = a.find(12);
  *v = 13;
}

class MyClass {
public:
  Item* find(const Item& t) {
    for(auto i=begin(), e=end(); i!=e; i++)
      if(*i==t)
        return i;
    return 0;
  }

  const Item* find(const Item& t) const {
    return const_cast<MyClass*>(this)->find(t);
  }
};


Мне очень не нравятся последние 3 строки.

Viewing all articles
Browse latest Browse all 319

Trending Articles