我应该如何命名这些课程?

时间:2016-11-03 13:43:19

标签: c++ c++11 naming-conventions

我有两组不同的类,它们继承自两个不同的基类(ValueToken)。

在这两个小组中,如果只有他们的名字与其他小组的班级名称没有冲突,我会拨打课程,我只需拨打StringNumberName。< / p>

所以基本上我需要一种方法来区分继承自String的类Value和继承自String的类Token,我不知道如何去做这个。

我不能将它们放在它们的基类的命名空间中,因为你继承了它们所在的同一个类,并且编译器给了我“无效使用不完整类型”错误。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

简单的解决方案是将它们命名为$(function(){ var _token = $('meta[name="_jwt"]').attr('content'); $.ajaxPrefilter(function (options, originalOptions, jqXHR) { jqXHR.setRequestHeader("your_jwt_token_header_name", _token); }); }); StringValue

您无法在其基类中定义它们,如:

StringToken

可以在命名空间内定义和基类

struct Value
{
    struct String : Value {};
};

然后引用namespace Value { struct Base {}; struct String:Base {}; } Value::Base

虽然我非常喜欢名称空间,但在这种特殊情况下,我倾向于使用Value::String解决方案。

(注意:我在示例中使用了StringValue因为它保存了struct的所有混乱。对于实际代码,您可能希望使用public。)

答案 1 :(得分:2)

命名空间应该没有问题。

struct Value {};
struct Token {};

namespace Values { struct String : Value {}; }
namespace Tokens { struct String : Token {}; }

应该正常工作

namespace Values { struct Value {}; struct String : Value {}; }
namespace Tokens { struct Token {}; struct String : Token {}; }

一件不起作用的事情是

struct Value
{
    struct String : public Value {};
}; 

因为当您尝试从中继承时Value未完全定义 如果这就是你正在做的事情,那么解决办法就是不这样做。

答案 2 :(得分:1)

拨打一个StringValue和另一个StringToken