相关疑难解决方法(0)

C++相当于Python的getattr

在python中,有一个名为getattr的函数,它看起来像这样:

class MyObject():
    def __init__(self):
        self.xyz = 4

obj = MyObject()
getattr(obj, 'xyz')
Run Code Online (Sandbox Code Playgroud)

对getattr的调用将返回4.

在C++(非Visual C++)中有类似的方法吗?

是否有任何具有此功能的库我可以使用字符串查找对象的成员变量?

我试图找到一种方法来查找我无法更改的C++类中的公共数据成员.所以我不能使用地图将字符串文字映射到值.也许像宏的'unstringify'?

c++ python serialization boost getattr

4
推荐指数
2
解决办法
1971
查看次数

在 C++ 中计算任何结构的简单方法

在 C++ 中,有没有办法定义一个打印每个结构的函数?我的意思是,在我们的项目中,有很多结构体;我有时需要打印它们以进行调试。我希望它们可以轻松打印,而无需向每个结构添加友元 ostream 函数。

struct type{
    string name;
    int id;
}
type aType;
aType.name= sahin;
aType.id=10;
Run Code Online (Sandbox Code Playgroud)

该函数可以这样工作:

printStruct(aType);
{
    name:sahin
    id:10
}
Run Code Online (Sandbox Code Playgroud)

然后,如果可能的话,我需要一种打印结构向量的方法。类似于 js 中的 JSON.stringify。

c++ struct

4
推荐指数
2
解决办法
774
查看次数

如何在 C++ 中注册动态成员

python中的魔术方法真的很神奇。例如:

class DynMember:

    def __getattr__(self, name: str):
        def fn(self, **kwargs):
            print(kwargs)

        setattr(self.__class__, name, fn)

        return lambda **x: fn(self, **x)

if __name__ == "__main__":
    d = DynMember()
    d.someFn(title="Greeting", description="Hello world!") # outputs {'title': 'Greeting', 'description': 'Hello world!'}
    d.someFn(k1="value 1", k2="value 2") # outputs {'k1': 'value 1', 'k2': 'value 2'}
Run Code Online (Sandbox Code Playgroud)

有没有someFnDynMember类。该方法是使用__getattr__魔法方法和setattr内置方法在类上设置的。这些方法非常强大,让类在 python 中创造奇迹。(仅用 40 行代码编写了一个 html 生成器)。如何在 C++ 中实现类似的东西?

c++

4
推荐指数
1
解决办法
128
查看次数

是否有一种将元数据与C++中的函数相关联的整洁方式

我有一个包含许多命令行选项的代码库.目前,如果在命令行上传入命令,则每个命令行选项都与表中的函数指针一起存在于表中.

例如

static CommandFunction s_Commands[] =
{
   { "command1", Func1 },
   { "command2", Func2 },
   { "command3", Func3 },
   etc...
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,表格很大,而且功能在其他地方.我更喜欢命令的字符串住在每个函数旁边.

例如:

COMMAND_ARG("command1")
void Func1()
{
    dostuff
    ...
}

COMMAND_ARG("command2")
void Func2()
{
    dostuff
    ...
}

COMMAND_ARG("command3")
void Func3()
{
    dostuff
    ...
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

c++

2
推荐指数
2
解决办法
211
查看次数

C++"if then else"模板替换

我想声明一个模板如下:

template <typename T>
{ 
  if objects of class T have method foo(), then 
   const int k=1
  else 
   if class has a static const int L then
    const int k=L
   else 
    const int k=0;


}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?一般来说,我想要一种基于T(或T中定义的typedef)属性设置静态consts的机制.

c++ templates if-statement

1
推荐指数
1
解决办法
2046
查看次数

列出C++类的成员

假设我有一个课程如下

class Rectangle{
    public:
    int height;
    int width;

};
Run Code Online (Sandbox Code Playgroud)

如何在不手动说明cout<<a.height或类似内容的情况下打印出该类成员的列表.换句话说,在不知道不同班级的成员的情况下,有没有办法让我打印出新班级的成员?

c++ class object

1
推荐指数
1
解决办法
196
查看次数

C++ - 将输入字符串作为内部代码变量进行评估

有没有办法将字符串作为c ++函数的输入参数并将其作为内部参数进行评估,例如结构名称或其他变量?

例如(用伪代码编写)

int myFunction(string nameStructure){ nameStructure.field = 1234 }

"带走"点是将输入字符串转换为代码中的变量.

标记

c++

0
推荐指数
1
解决办法
59
查看次数

如何对(任意)POD C++结构施加词典顺序?

我有一些POD struct foo; 假设是的struct foo { int x; unsigned y; }.我希望能够struct foo使用词典顺序进行比较- 当然是按照他们的字段顺序进行比较.也就是说,我希望所有的运营商<,==>等为工作struct foo

我可以用一些通用的方式做到这一点,而没有用任何反射巫术装饰我的结构定义- 而且没有拼写出所有那些操作符定义?或者是否有能力做到这一点太依赖"语言反思"的期望?

c++ reflection lexicographic lexicographic-ordering

0
推荐指数
1
解决办法
153
查看次数