gpt4 book ai didi

c++ - 在 Vim 中为 C++ 类创建 getter 和 setter 成员

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:28 24 4
gpt4 key购买 nike

我正在创建一个包含许多 double (或其他类型,类型无关紧要)成员的类。

class CalcParameters {
public:
CalcParameters() {}
~CalcParameters() {}

// getters and setters here

private:
double _param1;
double _param2;
...
};

是否可以在 Vim 中编写一个脚本来为每个参数自动生成公共(public) getter 和 setter?

喜欢

double param1() const { return _param1; }
void setParam1(double param1) { _param1 = param1; }
...

注意:

此代码不是真实代码的片段,而只是我为说明问题而编写的代码。在我的实际工作代码中,成员被命名并且设置者除了属性之外还有验证逻辑。但是当编写一个包含所有成员的骨架类时,最好让 Vim 为我创建基本的 getter 和 setter。这可能吗?

最佳答案

对于简单的数据类,有时另一个不错的选择是使用 boost::tuple (或 C++0x 中的 std::tuple):

typedef tuple<int, char> MyDataElement;
MyDataElement data = make_tuple(1,'c');
int whatever = get<0>(data); // 1

另外,三思而后行,你也可以考虑使用Boost Property Map .

最后,关于VIM脚本,当然可以了。我已经做了一些调查,您可以这样做(假设您使用前缀来标识成员变量,比如 m_):

:let bl = getbufline("" ,1, "$")

这将加载缓冲区的所有行,然后通过包含“m_”的内容过滤它们:

:let xx = filter(bl, 'v:val =~ "m_.*"')

然后您可以研究如何从数组 xx 中提取实际变量名,等等。

关于c++ - 在 Vim 中为 C++ 类创建 getter 和 setter 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com