小编Ste*_*eve的帖子

使用weak_ptr的观察者模式

我正在尝试Subject观察者模式中编写一个安全类.我想知道使用weak_ptr是否是以下列方式存储IObserver实例的最佳方式:

  • IObserver被释放后无法使用实例.
  • Subject类不抱上IObserver应free'd引用(流逝的听众的问题).
  • Subject类必须是线程安全的.

不幸的是,我们的编码标准说我们不允许使用boost.我想我以前的生活中是一个坏人.幸运的是,我被允许使用C++ 11(Visual Studio 2012附带的内容).

这是一个示例Observer类.

// Observer interface that supports notify() method
class IObserver
{
public:
    virtual void notify() const = 0;
    virtual ~IObserver() {}
};

// Concrete observer implementation that prints a message
class Observer : public IObserver
{
public:
    Observer( const std::string& message) : m_message( message ){}

    void notify() const {
        printf( "%s\r\n", m_message.c_str() …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers std c++11

15
推荐指数
1
解决办法
3620
查看次数

为什么clang没有用NRVO优化这个?

我想之所以一个相当不错的C++编译器11(铛)未优化的代码,并想知道如果这里有人有意见.

#include <iostream>
#define SLOW

struct A {
  A() {}
  ~A() { std::cout << "A d'tor\n"; }
  A(const A&) { std::cout << "A copy\n"; }
  A(A&&) { std::cout << "A move\n"; }
  A &operator =(A) { std::cout << "A copy assignment\n"; return *this; }
};

struct B {
  // Using move on a sink. 
  // Nice talk at Going Native 2013 by Sean Parent.
  B(A foo) : a_(std::move(foo)) {}  
  A a_;
};

A MakeA() {
  return A();
}

B MakeB() …
Run Code Online (Sandbox Code Playgroud)

c++ optimization nrvo c++11

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

即使没有实现接口,程序也在编译

我有一个名为的接口 abc

public interface abc
{
    void start();
}
Run Code Online (Sandbox Code Playgroud)

我有一个名为的抽象类 def

public abstract class def extends Thread implements abc
{
}
Run Code Online (Sandbox Code Playgroud)

我创建了另一个扩展def名为的类ghj

public class ghj extends def
{
  //it is defing all the methods of its above abstract class
  //now it does not implement the method define in interface start();
}
Run Code Online (Sandbox Code Playgroud)

请告知类ghj是否没有实现接口abc所需的方法,那么程序如何编译?

java

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

IQbservable的示例

我正在尝试提出一些很好的IQbservable使用示例,并且我会问是否有人已经使用过它,或者对于如何使用或滥用它有任何想法?

编辑这(IQbservable)不是拼写错误!(看评论)

.net c# vb.net system.reactive

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

传递给 LogonUser() 的密码不正确,但 Active Directory 帐户未按预期锁定

我有活动目录“登录重试次数”= 3。我们使用错误的密码调用了 LogonUser函数 5 次。之后我LogonUser用正确的密码打电话,它可以工作,用户可以登录。

为什么账户没有被锁定?

c++ winapi active-directory

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

如何在GDB中定义offsetof()宏

为了方便起见,我想在GDB中定义一些辅助marcos,其中一个就是offsetof()宏.

我试过了

define offsetof
    if $argc == 2
        (int)(&((($arg0 *)0)->$arg1))
    end
end
Run Code Online (Sandbox Code Playgroud)

它不工作:1类不如struct node将分裂成Structnode,所以$arg0 = Struct,$arg1 = node.2.我不确定gdb的命令是否可以返回值.

任何人都可以帮我一把吗?

c debugging gdb

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

将特定长度的char数组转换为字符串

我需要将char数组转换为字符串,这样做的问题是......我需要将特定长度的字符数组中的字符转换为k到字符串.即,char数组是"b".b动态获取值.....例如取"p,a,p,e,r,s"现在k值也是动态的,对于这个单词"k = 5",然后char数组"b"中只有4个字符应转换为字符串...即字符串应打印为"paper"........我现在拥有的代码是

 for(int c=0;c<=k;c++)
 {
      System.out.print(b[c]);
 }
 str=new String(b);
 System.out.println(str); 
Run Code Online (Sandbox Code Playgroud)

其中将b[c]正确的值(在char数组中)打印为"paper".在转换为字符串str(在程序中)时,它打印为"论文"本身....任何人都可以给我解决方案吗?

java

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

Windows API,__ declspec(thread)vs CreateThread?

我一直在尝试通过Windows API了解线程.我跑过__declspec( thread )MSDN,但我不明白的区别是什么,和之间CreateThread().

听起来你只在对象上创建线程?这是否意味着如果我while(1);通过该对象编写了一个在我的主类中执行并运行该方法的方法,那么它会在一个单独的线程中执行吗?我想我的问题是__declspec ( thread )用于什么,我应该用它CreateThread吗?

对不起,如果我的问题令人困惑.

c c++ winapi multithreading

2
推荐指数
1
解决办法
839
查看次数

访问ntfs流以获取非常长的文件名失败

从具有非常长名称的文件访问备用ntfs流时遇到一些麻烦(更多MAX_PATH字符长,根据使用"\\?\"前缀创建).我第一次认为这是我在代码中的错误,但后来我尝试了一个cmd命令:

更多<"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\long long long long long long long long long long filename !!!.png:streamname"

它失败并显示找不到文件的错误.该文件存在,其内容可以读取,但我无法访问我需要读取和写入的流.我不希望我的软件无法使用长文件名,所以我正在寻找这种情况的任何解决方法.

我知道我可以使用BackupRead功能,但我不确定这个解决方案是否可以在大文件上快速运行,并且在2000年无法运行.

GetShortPathName给出了相同的失败结果,是否有任何其他API可以缩短文件名?我真的不想使用短文件名的临时联结.有什么想法吗?

windows winapi ntfs stream

2
推荐指数
1
解决办法
345
查看次数

如何在iphone中增加UITextField的高度

我正在创造UITextField使用Xib.默认高度为30.但我想将文本字段高度增加到40.这里我创建了插座并映射到文件所有者,然后我在下面写了一行代码.

[textfield setFrame:CGRectMake(100, 200, 400, 100)];
Run Code Online (Sandbox Code Playgroud)

但根据我的编码,高度和宽度也没有变化.

提前致谢.

iphone xib uitextfield outlet

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