相关疑难解决方法(0)

如何在C中纯粹编写iOS应用程序

我在这里读到在Objective-C之前学习C?

通常我会用纯C代码替换一些Obj-C代码(毕竟你可以根据需要混合它们,Obj-C方法的内容可以完全是纯C代码)

这是真的?

是否有可能纯粹使用C编程语言构建iPhone应用程序?

c cocoa-touch objective-c objective-c-runtime ios

352
推荐指数
3
解决办法
8万
查看次数

如何将反射添加到C++应用程序?

我希望能够内省一个C++类的名称,内容(即成员及其类型)等.我在这里说的是原生C++,而不是托管C++,它有反射.我意识到C++使用RTTI提供一些有限的信息.哪些额外的库(或其他技术)可以提供此信息?

c++ reflection templates sfinae

242
推荐指数
19
解决办法
19万
查看次数

有没有办法从持有类名的字符串中实例化对象?

我有一个文件:Base.h

class Base;
class DerivedA : public Base;
class DerivedB : public Base;

/*etc...*/
Run Code Online (Sandbox Code Playgroud)

和另一个文件:BaseFactory.h

#include "Base.h"

class BaseFactory
{
public:
  BaseFactory(const string &sClassName){msClassName = sClassName;};

  Base * Create()
  {
    if(msClassName == "DerivedA")
    {
      return new DerivedA();
    }
    else if(msClassName == "DerivedB")
    {
      return new DerivedB();
    }
    else if(/*etc...*/)
    {
      /*etc...*/
    }
  };
private:
  string msClassName;
};

/*etc.*/
Run Code Online (Sandbox Code Playgroud)

有没有办法以某种方式将此字符串转换为实际类型(类),以便BaseFactory不必知道所有可能的Derived类,并为每个类都有if()?我可以用这个字符串生成一个类吗?

我认为这可以通过Reflection在C#中完成.C++中有类似的东西吗?

c++ inheritance factory instantiation

135
推荐指数
3
解决办法
8万
查看次数

C中的反思支持

我知道它不受支持,但我想知道它周围是否有任何技巧.有小费吗?

c reflection

27
推荐指数
6
解决办法
2万
查看次数

为什么反射可以在C#中访问类的受保护/私有成员?

为什么反射可以在C#中访问类的受保护/私有成员?

这对于全班来说是不安全的,为什么反思会给予这种力量?这是反模式吗?

c# reflection

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

C++,获取函数的名称

在C++中,有没有办法从它的指针中获取函数签名/名称?

void test(float data) {}
cout << typeid(&test).name();
Run Code Online (Sandbox Code Playgroud)

我想使用这些数据进行日志记录.

c++ string function

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

C/C++可以通过查询类来获取实例成员的"列表"吗?

假设我们在C++中有一个结构:

struct foobar
{
      int age; 
      bool hot;
      String name
};
Run Code Online (Sandbox Code Playgroud)

有没有办法以编程方式查询上面的结构来提取其实例成员?例如:

String[] members = magicClass.getInstanceMembers(foobar);
Run Code Online (Sandbox Code Playgroud)

成员会有["age", "hot", "name"]它的价值观.

可能?我问的原因是因为我的结构随着时间的推移发生了变化(添加/删除了变量).我希望能够使用此保存的数据创建自动生成Lua文件.

谢谢

c c++ instance-variables

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

访问宏中的变量值

前段时间,我为c和c ++程序制作了这个漂亮的断言宏

#define ASSERT(truthy, message) \
     if (!(truthy)) \
     {\
         cout << message << " on line " << __LINE__ << " in file " << __FILE__ << ". Check was " << #truthy << endl;\
     }
Run Code Online (Sandbox Code Playgroud)

Scatter ASSERT调用整个代码,只要truthy值不真实,它就会发出警告!在开发过程中非常方便,以提醒您潜在的错误.

ASSERT(filesFound > 0, "Couldn't find any files, check your path!");
Run Code Online (Sandbox Code Playgroud)

当filesFound为0时,宏将打印出来

找不到任何文件,检查你的路径!在文件openFiles.c的第27行.检查是filesFound> 0

现在,我希望它打印,给我更多相关信息,是传递给truthy参数的任何变量的值.像这样

找不到任何文件,检查你的路径!在文件openFiles.c的第27行.检查是filesFound> 0,filesFound是0

我想知道,这似乎是类似lisp的领域,是否有任何黑魔法预处理可用于评估变量和函数的值,而无需评估truthy语句?

我假设很失望.

c++ macros

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

使用表示C++中变量名称的字符串访问变量值

如果标题不清楚,我会尽量澄清我的要求:

想象一下,我有一个名为counter的变量,我知道我可以通过以下方式看到它的当前值:

std::cout << counter << std::endl;
Run Code Online (Sandbox Code Playgroud)

但是,假设我有很多变量,我不知道在运行之前我想要查看哪些变量.

有没有人知道我可以通过使用其名称来获取变量值的方法,例如:

std::cout << valueOf("counter") << std::endl;
Run Code Online (Sandbox Code Playgroud)

我觉得能够做到这一点可能会使调试大型复杂项目变得更容易.

在此先感谢您的时间.


更新:所提供的所有答案都是有效且有用的,但重点是C++中不存在反射(并且在阅读建议的链接之后很明显为什么).

c++ variables

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

使用从string中提取的参数调用函数

我正在看以下问题:

我得到格式如下的字符串:

functionname_parameter1_parameter2_parameter3
otherfunctionname_parameter1_parameter2
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想用给定的参数调用函数.所以假设我有一个功能测试:

void test(int x, float y, std::string z) {}
Run Code Online (Sandbox Code Playgroud)

我收到一条消息:

test_5_2.0_abc
Run Code Online (Sandbox Code Playgroud)

那么我想像这样自动调用函数测试:

test(5, 2.0, "abc");
Run Code Online (Sandbox Code Playgroud)

您是否有任何关于如何在C++中实现此目的的提示?

c++ reflection binding parsing function

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