问题标签 [class-members]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
7727 浏览

c++ - GCC 问题:使用依赖于模板参数的基类成员

以下代码不能用 gcc 编译,但可以用 Visual Studio 编译:

我得到错误:

test.cpp:在成员函数'void B::bar()'中:

test.cpp:11:错误:“foo”未在此范围内声明

但它应该是!如果我bar改为

然后它编译,但我认为我不必这样做。GCC 在此处遵循的 C++ 官方规范中有什么内容,还是只是一个怪癖?

0 投票
10 回答
105673 浏览

c++ - 我应该更喜欢成员数据中的指针还是引用?

这是一个简化的例子来说明这个问题:

所以 B 负责更新 C 的一部分。我通过 lint 运行代码,它对引用成员抱怨:lint#1725。这谈到了照顾默认副本和分配这很公平,但是默认副本和分配对于指针也很糟糕,所以那里几乎没有优势。

我总是尽可能地尝试使用引用,因为裸指针不确定地引入了谁负责删除该指针。我更喜欢按值嵌入对象,但如果需要指针,我会在拥有指针的类的成员数据中使用 auto_ptr,并将对象作为引用传递。

当指针可能为空或可能更改时,我通常只会在成员数据中使用指针。是否有任何其他理由更喜欢指针而不是数据成员的引用?

是否可以说包含引用的对象不应该是可分配的,因为引用一旦初始化就不应更改?

0 投票
8 回答
1740 浏览

c++ - 为什么不允许“内联”静态常量,除了整数?

可能重复
为什么我不能在一个类中有一个非整数静态常量成员?

#2、#3、#4 和 #5 是否有任何非法的原因?

我想我知道#5 的原因:编译器需要一个“真正的”字符串对象(因为它不是内置类型)并且不能盲目地Five替换"Hello"#define Five "Hello". 但如果是这种情况,编译器不能在 .obj 文件中留下提示并告诉链接器自动创建string Five某处的一个实例吗?

对于#3 和#4,尤其是#2(哈哈!)...我真的看不出任何可能的原因!浮点数和双精度数是内置类型,就像 int 一样!而 short 只是一个(可能)更短的整数。


编辑:我正在使用 Visual Studio 2008 来编译它。我认为在这种情况下所有编译器的行为都相同,但显然 g++ 编译得很好(#5除外)。VS 为该片段提供的错误是:

0 投票
1 回答
528 浏览

php - 如何从类变量数组中访问类成员?

我想使用 PHP 的反射功能从方法中检索参数名称列表。我有这样的课:

我可以使用如下代码获取列表:

我想知道如何从数组中访问班级成员,所以我不必做作业。这可能吗?我尝试了类似的方法echo ($params[0])->name,但出现错误。

0 投票
9 回答
673 浏览

c++ - 面向对象的设计建议

这是我的代码:

我需要通过 Soldier 对象调用 Gun 的所有成员函数。就像是:

或者

那么哪一个是更好的设计呢?将 gun 对象隐藏为私有成员并使用 getGun() 函数访问它。还是让它成为公共成员?或者我可以封装所有这些功能会使实现更加困难:

那么你认为哪一个是最好的呢?

0 投票
2 回答
27650 浏览

c++ - 类数据成员的初始化顺序

在下面的代码中,当调用 ctor 时,会先调用orX的 ctor吗?它们在类主体中的放置顺序是否控制了这一点?如果有人可以提供一段来自 C++ 标准的文本片段来讨论这个问题,那将是完美的。AB

0 投票
3 回答
1778 浏览

visual-studio-2008 - VS IntelliSense - IFluentInterface / IHideObjectMembers 技巧不起作用。为什么?

IHideObjectMembers技巧(又名IFluentInterface)可用于例如流畅的接口实现中以隐藏System.ObjectIntelliSense 的成员。(如果你不知道这个技巧,你可以通过上面的链接阅读它;我只是在这里重复接口的通常声明:)

我现在应该能够隐藏System.Object另一种类型的成员,如下所示:

或者:

我在 VS 2008 Express 和 VS 2008 Standard 中都试过这个。但是,没有任何成员对 IntelliSense 隐藏。我EditorBrowsableAttribute在不同的项目中使用过它,它总是运行良好;但是,它在这种特定情况下不起作用。

如果事情按预期进行,我只会看到该SomeMethodTwo方法。

我错过了什么吗?


PS:您可以从声明和屏幕截图中推断出我的示例代码。我有一个SomeClass带有单个虚拟方法的类,称为SomeMethodTwo. 很简单。我没有在这个类中重新实现这四个System.Object方法,因为这不是必需的。

0 投票
2 回答
4716 浏览

c++ - 多继承模板类

我的第一个想法是,上面的代码应该没问题,因为 A 类将包含 2 个重载的提交函数,它们将接受 messageA 和 messageB 对象。

但是,编译器给了我以下错误:

我可以知道为什么有一个模棱两可吗?对于第一次提交调用,我想调用 messageA 版本不是很明显吗?对于第二次提交调用,我想调用 messageB 版本?


0 投票
2 回答
255 浏览

c++ - 在 C++ 中将智能指针放入类数据(作为类成员)中的正确方法是什么?

假设我有一个类 Boda:

cydo在这个类中有一个成员,我想成为一个智能指针(也就是说,我希望它在类被销毁后自动释放)。

我正在使用 Boost 的智能指针,所以我写:

这是将智能指针作为类成员的正确用法吗?

谢谢,博达赛多。

0 投票
2 回答
352 浏览

c++ - 是否可以在 C++ 的类中初始化静态 const 成员对象?

是否可以在类定义中初始化静态常量成员?请参阅下面的代码,

非常感谢。