Синтаксис API Abaqus C++

Я новичок в API Abaqus C++ и у меня есть вопрос о синтаксисе.

db_Odb& odb = openOdb("file.odb");
odb_Step& step = odb.steps()["Step-1"];

odb_Instance& instance = 
    odb.rootAssembly().instances()["PART-1-1"];

Есть несколько случаев, когда синтаксис похож на odb.steps()["Step-1"].

Мой вопрос в odb.steps()["Step-1"]:

  • odb это объект?
  • является ли steps() методом объекта?
  • что такое steps()["str"]? Я не видел этого в обычном синтаксисе C++.

person dfrw4r3    schedule 26.03.2019    source источник


Ответы (1)


Чтобы ответить на ваши вопросы: Да, да, и оператор индекса. Это стандартный синтаксис C++.

Если вообще не знать о рассматриваемой библиотеке, класс может выглядеть примерно так:

class db_Odb
{
public:
    std::unordered_map< std::string, odb_Step >& steps();
    // ...
};

Таким образом, odb.steps() возвращает индексируемый объект (здесь я использовал хэш-карту), а затем мы ищем в нем ключ, добавляя ["Step-1"], который вызывает оператор индекса и возвращает ссылку на один экземпляр odb_Step на этой карте.

person metal    schedule 26.03.2019