小编cvb*_*cvb的帖子

C++静态虚拟成员?

在C++中是否有可能拥有一个staticvirtual?的成员函数?显然,没有一种直接的方法(static virtual member();编译错误),但是至少有一种方法可以达到同样的效果吗?

IE:

struct Object
{
     struct TypeInformation;

     static virtual const TypeInformation &GetTypeInformation() const;
};

struct SomeObject : public Object
{
     static virtual const TypeInformation &GetTypeInformation() const;
};
Run Code Online (Sandbox Code Playgroud)

这是有道理的使用GetTypeInformation()上的一个实例(都object->GetTypeInformation())和一类(SomeObject::GetTypeInformation()),它可以为模板,比较有用和重要.

我能想到的唯一方法包括编写两个函数/一个函数和一个常量,每个类,或使用宏.

还有其他方法吗?

c++ virtual static

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

用C++扩展枚举?

C++中是否有一种扩展/"继承"枚举的方法?

IE:

enum Enum {A,B,C};
enum EnumEx : public Enum {D,E,F};
Run Code Online (Sandbox Code Playgroud)

或至少定义它们之间的转换?

c++ enums

68
推荐指数
5
解决办法
4万
查看次数

C-Style Strings作为模板参数?

C样式字符串可以用作模板参数吗?

我试过了:

template <char *str>
struct X
{
    const char *GetString() const
    {
         return str;
    }
};

int main()
{
    X<"String"> x;
    cout<<x.GetString();
}
Run Code Online (Sandbox Code Playgroud)

虽然我没有对类定义抱怨,但实例化产生'X' : invalid expression as a template argument for 'str'(VC).

c++ string templates

53
推荐指数
5
解决办法
7万
查看次数

HTTP/1.0仍在使用吗?

假设一个是编写HTTP服务器/客户端,支持HTTP/1.0有多重要?它现在仍然在任何地方使用吗?

编辑:我与HTTP/1.0的有用性/重要性不太关注,而量软件实际使用它的非内部(单元测试是内部使用,例如)目的在现实世界(浏览器,机器人,智能手机/傻瓜等...).

http backwards-compatibility

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

切换到调试模式时,Visual Studio会冻结

奇怪的Visual Studio(TS 2008)问题:每当我在特定项目中从Release模式切换到Debug模式时,IDE都会完全冻结.在我尝试构建或执行任何其他操作之前,它会在我切换时发生.

整个事情一开始就没有了,没有任何我能想到的异常变化.我试图清理解决方案,但它没有帮助.

有没有人遇到过这个?

visual-studio-2008 visual-studio debug-mode

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

常量表达式的数学函数是否在编译时预先计算?

我倾向于使用常量表达式的数学函数来获得方便性和连贯性(即log(x)/log(2)代替log(x)/0.3...).由于这些函数实际上并不是语言本身的一部分,它们都没有定义math.h(仅声明),常量的函数会在编译时预先计算,还是会在运行时浪费计算?

c math compile-time

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

C/C++ HTTP库,只处理逻辑?

我正在寻找一个用于C/C++的HTTP库,它只处理协议逻辑,而不是实际的传输机制.我遇到的图书馆往往会涉及整个沟通过程,这不是我需要的.

但是,我正在寻找的东西不仅仅是一个HTTP解析器.理想情况下,它还会处理诸如会话/连接管理,多路复用等事情......只是它会留下实际执行通信细节以供应用程序执行.我正在查看客户端和服务器端,但其中任何一个都会有所帮助.

我最好找一些免费的东西(非GPL).HTTPS是一个加号.轻量级是一个加号.简单是一大优点.

有这样的吗?

c c++ logic http

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

C++模板和歧义问题

我有一个指针类的子集,如下所示:

template <typename T>
struct Pointer
{
     Pointer();
     Pointer(T *const x);
     Pointer(const Pointer &x);
     template <typename t>
     Pointer(const Pointer<t> &x);

     operator T *() const;
};
Run Code Online (Sandbox Code Playgroud)

最后一个构造函数的目标是允许传递Pointer一个子类,或者基本上可以隐式转换为的任何类型T *.这个实际规则只能由构造函数的定义强制执行,而编译器实际上无法通过声明单独解决它.如果我删除它,并尝试传递Pointer<Sub>给构造函数Pointer<Base>,我会得到一个编译错误,尽管可能的路径通过operator T *().

虽然它解决了上述问题,但却创造了另一个问题.如果我有一个重载函数,其中一个重载占用a Pointer<UnrelatedClass>而另一个占用Pointer<BaseClass>,并且我尝试用a调用它Pointer<SubClass>,我在两个重载之间得到一个模糊性,当然,意图是后一个重载将被调用.

有什么建议?(希望我足够清楚)

c++ templates ambiguity implicit-cast ambiguous-call

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