小编Mar*_*lon的帖子

虚函数问题

我有两节课:

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)

c++ virtual-functions

7
推荐指数
2
解决办法
279
查看次数

Visual C++不一致代码的示例?

在使用visual C++时,有哪些代码不符合标准?允许在Visual C++下编译但没有别的东西.

c++ standards-compliance visual-c++

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

如何使用InvalidEnumArgumentException维护代码?

我很好奇你抛出一个代码后如何维护你的代码System.ComponentModel.InvalidEnumArgumentException.

基本上我有一个这样的开关语句:

switch (enumValue)
{
    case MyEnum.Value1:
        break;

    case MyEnum.Value2:
        break;

    default:
        throw new InvalidEnumArgumentException();
}
Run Code Online (Sandbox Code Playgroud)

如果我决定什么更值添加到MyEnum在未来,例如,Value3Value4?这意味着我最终会抛出一个误导性的例外.我该如何防止这种情况?

投掷前我应该使用反射吗?在这种情况下我应该抛出什么异常?我正在寻找建议.


我刚刚在几分钟前发现了这个例外,所以也许我在错误的背景下看这个.如果不支持某个枚举参数(在这种情况下Value3并且Value4不支持),是否抛出此异常?

c# maintainability

7
推荐指数
3
解决办法
4145
查看次数

如何获取存储在ArrayList中的值<HashMap <key,value >>?

我有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),因为它只对数组进行交互.

java android arraylist hashmap

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

Boost.Asio async_send问题

我正在使用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)

但现在我想知道我是否有多个客户端,我是否需要为每个连接创建一个单独的向量?

或者我可以使用那个单一的载体吗?如果我能够使用那个单一的向量,如果我覆盖其中的内容会弄乱我发送给我所有客户端的数据吗?

c++ boost-asio

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

为什么从size_t转换为unsigned int会给我一个警告?

我有代码:

unsigned int length = strlen(somestring);
Run Code Online (Sandbox Code Playgroud)

我与4警告级别编译和它告诉我,"转换,从size_tunsigned int,可能的数据丢失",当size_ttypedef一个unsigned int.

为什么!?

编辑:

我刚解决了自己的问题.我是XP用户,我的编译器正在检查64位兼容性.由于size_t是平台相关的,对于64位,它将是一个unsigned long long,其中它与a不同unsigned int.

c++ size-t

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

C#Regex是一个有一些限制的用户名

此主题类似.

我正在尝试使用以下限制验证用户名:

  • 必须以字母或数字开头
  • 长度必须为3到15个字符
  • 符号包括:. - _()[]
  • 符号不能相邻,但字母和数字可以

编辑:

  • 字母和数字是az AZ 0-9

被困了一会儿.我是正则表达式的新手.

c# regex

5
推荐指数
2
解决办法
5563
查看次数

C#扩展方法,用于检查枚举是否设置了标志

我想创建一个扩展方法来检查枚举是否有一个标志.

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)

我怎么能做到这一点?(如果有一个类已经完成了这个,那么我会很感激如何解释这个问题;我已经把这个方法弄得太久了!)

提前致谢

c# generics enum-flags

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

如果最后一个地址是0xFFFFFFFF,如何取一个数组末尾的地址?

如果将地址取一个数组的末尾是合法的,那么如果数组地址的最后一个元素是0xFFFFFFFF

这段代码将如何工作:

for (vector<char>::iterator it = vector_.begin(), it != vector_.end(); ++it)
{
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我在这里读到在提出这个问题之前它是合法的:我可以采用数组的一个接一个元素的地址吗?

c++

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

在树枝扩展中使用配置参数

我正在创建Twig扩展,因此我可以创建自定义过滤器和功能.我需要在'parameters.ini'文件中访问全局配置的参数.

我该怎么办呢?

symfony twig

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