我有两节课:
class x {
public:
virtual void hello() {
std::cout << "x" << std::endl;
}
};
class y : public x {
public:
void hello() {
std::cout << "y" << std::endl;
}
};
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么以下两个调用hello()打印不同的消息?他们为什么不打印"y"?是因为第一个是副本而第二个实际指向内存中的对象?
int main() {
y a;
x b = a;
b.hello(); // prints x
x* c = &a;
c->hello(); // prints y
return 0;
}
Run Code Online (Sandbox Code Playgroud) 在使用visual C++时,有哪些代码不符合标准?允许在Visual C++下编译但没有别的东西.
我很好奇你抛出一个代码后如何维护你的代码System.ComponentModel.InvalidEnumArgumentException.
基本上我有一个这样的开关语句:
switch (enumValue)
{
case MyEnum.Value1:
break;
case MyEnum.Value2:
break;
default:
throw new InvalidEnumArgumentException();
}
Run Code Online (Sandbox Code Playgroud)
如果我决定什么更值添加到MyEnum在未来,例如,Value3和Value4?这意味着我最终会抛出一个误导性的例外.我该如何防止这种情况?
投掷前我应该使用反射吗?在这种情况下我应该抛出什么异常?我正在寻找建议.
我刚刚在几分钟前发现了这个例外,所以也许我在错误的背景下看这个.如果不支持某个枚举参数(在这种情况下Value3并且Value4不支持),是否抛出此异常?
我有ArrayList>.在另一个活动中,我想访问存储在ArrayList>中的所有值.
我试过以下代码:
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
for(Hashmap<String, String> map: mylist) {
for(Entry<String, String> mapEntry: map) {
String key = mapEntry.getKey();
String value = mapEntry.getValue();
}
}
Run Code Online (Sandbox Code Playgroud)
但它显示一个错误for(Entry<String, String> mapEntry: map),因为它只对数组进行交互.
我正在使用Boost.Asio来编写我正在编写的服务器应用程序.
async_send要求调用者保持正在发送的数据的所有权,直到数据成功发送.这意味着我的代码(看起来像下面这样)会失败,而且它会失败,因为data它将不再是一个有效的对象.
void func()
{
std::vector<unsigned char> data;
// ...
// fill data with stuff
// ...
socket.async_send(boost::asio::buffer(data), handler);
}
Run Code Online (Sandbox Code Playgroud)
所以我的解决方案是做这样的事情:
std::vector<unsigned char> data;
void func()
{
// ...
// fill data with stuff
// ...
socket.async_send(boost::asio::buffer(data), handler)
}
Run Code Online (Sandbox Code Playgroud)
但现在我想知道我是否有多个客户端,我是否需要为每个连接创建一个单独的向量?
或者我可以使用那个单一的载体吗?如果我能够使用那个单一的向量,如果我覆盖其中的内容会弄乱我发送给我所有客户端的数据吗?
我有代码:
unsigned int length = strlen(somestring);
Run Code Online (Sandbox Code Playgroud)
我与4警告级别编译和它告诉我,"转换,从size_t到unsigned int,可能的数据丢失",当size_t是typedef一个unsigned int.
为什么!?
编辑:
我刚解决了自己的问题.我是XP用户,我的编译器正在检查64位兼容性.由于size_t是平台相关的,对于64位,它将是一个unsigned long long,其中它与a不同unsigned int.
与此主题类似.
我正在尝试使用以下限制验证用户名:
编辑:
被困了一会儿.我是正则表达式的新手.
我想创建一个扩展方法来检查枚举是否有一个标志.
DaysOfWeek workDays = DaysOfWeek.Monday | DaysOfWeek.Tuesday | DaysOfWeek.Wednesday;
// instead of this:
if ((workDays & DaysOfWeek.Monday) == DaysOfWeek.Monday)
...
// I want this:
if (workDays.ContainsFlag(DaysOfWeek.Monday))
...
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?(如果有一个类已经完成了这个,那么我会很感激如何解释这个问题;我已经把这个方法弄得太久了!)
提前致谢
如果将地址取一个数组的末尾是合法的,那么如果数组地址的最后一个元素是0xFFFFFFFF?
这段代码将如何工作:
for (vector<char>::iterator it = vector_.begin(), it != vector_.end(); ++it)
{
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我在这里读到在提出这个问题之前它是合法的:我可以采用数组的一个接一个元素的地址吗?
我正在创建Twig扩展,因此我可以创建自定义过滤器和功能.我需要在'parameters.ini'文件中访问全局配置的参数.
我该怎么办呢?
c++ ×5
c# ×3
android ×1
arraylist ×1
boost-asio ×1
enum-flags ×1
generics ×1
hashmap ×1
java ×1
regex ×1
size-t ×1
symfony ×1
twig ×1
visual-c++ ×1