【发布时间】:2017-11-14 02:56:59
【问题描述】:
我正在学习 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 时,这显然会导致问题。如何告诉工具我需要单独的文件用于类声明和实现?
【问题讨论】:
-
您并不想为每个类设置一个单独的翻译单元 (.cpp)。只要方法被标记为内联,您就可以在许多翻译单元中使用它们。请注意,由于您尚未提供实际生成的输出,因此无法判断它是否正常。
-
@VTT 公平点。我没有在我的模型中将任何内容标记为内联。对于简单的 getter/setter 方法,内联很好,但不可避免地会有一些我不希望内联的更复杂的方法。我将使用一些实际输出来更新问题。
-
@VTT 除非生成的
inline关键字将导致问题。 -
@CodingHero 在您的 C++ 代码生成选项中设置了什么?有源扩展集吗?
-
@πάνταῥεῖ 是的,还有?另请注意,post 中提供的代码不是生成的代码。