Я изучаю Enterprise Architect, и пока мне кажется, что это хороший инструмент. Тем не менее, у меня возникли проблемы с генерацией кода. Я бы хотел, чтобы сгенерированный код был отделен так, чтобы объявление класса было в файле .h, а реализация — в файлах .cpp (кроме шаблонных классов). Например, я ожидаю, что сгенерированный код для некоторого класса Foo будет выглядеть так:
foo.h
class Foo
{
public:
Foo();
int GetSomeInt();
void SetSomeInt(int a);
private:
int someInt;
}
foo.cpp
Foo::Foo()
{
}
int Foo::GetSomeInt()
{
}void Foo::SetSomeInt(int a)
{
}
Вместо этого я получаю заголовочный файл со всем приведенным выше кодом, который, очевидно, вызовет проблемы позже, когда я попытаюсь использовать Foo
в нескольких файлах, которые все связаны друг с другом. Как я могу сказать инструменту, что я хочу отдельные файлы для объявления класса и реализации?
После дальнейших экспериментов, пытаясь ответить на комментарии, я обнаружил, по крайней мере, часть своей проблемы. Исходный смоделированный класс, для которого я пытался сгенерировать код, был классом шаблона. Однако даже после удаления шаблона все реализации были сгенерированы в файле .h. Файл .cpp также был создан, но содержал только using
заявление, ссылающееся на то, что было в файле .h.
После создания новых смоделированных классов я обнаружил, что «нормальное» поведение — это то, что я ожидал: определения классов хранятся в файле .h, а детали реализации — в файле .cpp. Я также попытался создать шаблонный класс и затем удалить шаблон; снова поведение было таким, как ожидалось. Кажется, что я, должно быть, сделал что-то странное с моим первоначальным классом, что я не понял, как отменить.
Спасибо тем, кто предложил комментарии!
Других решений пока нет …