问题列表 - 第533页

为什么要使用"PIMPL"成语?

背景资料:

所述PIMPL成语(指针实现)是用于执行隐藏在其中一个公共类包装的结构或类,可以不在库的公共类是的一部分外部看到的技术.

这会隐藏来自库用户的内部实现细节和数据.

在实现这个习惯用法时,为什么要将公共方法放在pimpl类而不是公共类上,因为公共类方法实现会被编译到库中,而用户只有头文件?

为了说明,此代码将Purr()实现放在impl类上并将其包装起来.

为什么不直接在公共类上实现Purr?

// header file:
class Cat {
    private:
        class CatImpl;  // Not defined here
        CatImpl *cat_;  // Handle

    public:
        Cat();            // Constructor
        ~Cat();           // Destructor
        // Other operations...
        Purr();
};


// CPP file:
#include "cat.h"

class Cat::CatImpl {
    Purr();
...     // The actual implementation can be anything
};

Cat::Cat() {
    cat_ = new CatImpl;
}

Cat::~Cat() {
    delete cat_;
}

Cat::Purr(){ cat_->Purr(); }
CatImpl::Purr(){
   printf("purrrrrr");
}
Run Code Online (Sandbox Code Playgroud)

c++ oop information-hiding pimpl-idiom

128
推荐指数
5
解决办法
10万
查看次数

XmlSerializer - 反映类型时出错

使用C#.NET 2.0,我有一个复合数据类,它具有该[Serializable]属性.我正在创建一个XMLSerializer类并将其传递给构造函数:

XmlSerializer serializer = new XmlSerializer(typeof(DataClass));
Run Code Online (Sandbox Code Playgroud)

我得到一个例外说:

有一个反映类型的错误.

在数据类内部还有另一个复合对象.这是否还需要具有该[Serializable]属性,或者将其置于顶层对象上,是否以递归方式将其应用于内部的所有对象?

.net c# xml serialization .net-2.0

326
推荐指数
8
解决办法
23万
查看次数

使用本地用户帐户在Windows上进行基于PHP表单的身份验证

我正在运行PHP,Apache和Windows.我没有域设置,所以我希望我的网站基于表单的身份验证使用Windows内置的本地用户帐户数据库(我认为它称为SAM).

我知道如果设置了Active Directory,您可以使用PHP LDAP模块在脚本中进行连接和身份验证,但是如果没有AD,则没有LDAP.独立机器的等价物是什么?

php windows apache authentication sam

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

发起下载的最佳方式?

在基于PHP的网站上,我想在填写简短表单后向用户发送下载包.网站启动的下载应该类似于download.com这样的网站,它们说"你的下载将在一瞬间开始".

我知道的几种可能的方法和浏览器兼容性(基于快速测试):

1)window.open指向新文件.

- FireFox 3 blocks this.  
 - IE6 blocks this.  
 - IE7 blocks this.
Run Code Online (Sandbox Code Playgroud)

2)创建指向新文件的iframe.

- FireFox 3 seems to think this is OK. (Maybe it's because I already accepted it once?)  
 - IE6 blocks this.  
 - IE7 blocks this.

How can I do this so that at least these three browsers will not object? 
Run Code Online (Sandbox Code Playgroud)

额外奖励:有没有一种方法不需要浏览器条件语句?

(我相信download.com有条件地使用这两种方法,但我不能让任何一种方法工作.)

回应和澄清:

Q: "Why not point the current window to the file?"  
A: That might work, but in …
Run Code Online (Sandbox Code Playgroud)

javascript php download

12
推荐指数
3
解决办法
8296
查看次数

在PHP5中,我应该使用Exceptions还是trigger_error/set_error_handler?

做任何一种方式的优点/缺点是什么?有一条正确的方法(tm)?

php exception

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

开始使用Silverlight开发

如何在Silverlight中开始开发?

是否需要新的IDE?或者Visual Studio会支持吗?

.net silverlight visual-studio-2008 visual-studio

6
推荐指数
2
解决办法
1242
查看次数

如何用我自己的实现替换MS VC++项目中的WinAPI函数调用(名称和参数设置是相同的)?

我需要替换所有的WinAPI调用

  • 的CreateFile,
  • ReadFile的,
  • SetFilePointer,
  • CloseHandle的

用我自己的实现(通过蓝牙使用低级文件读取).代码,其中的功能将被替换,是视频文件播放器,它已经可以使用常规的hdd文件.还需要,如果VideoPlayer输入中的文件是常规hdd文件,则视频播放器仍然可以播放来自HDD的文件.

这项任务的最佳做法是什么?

c++ winapi visual-c++

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

匿名管道上重叠的I/O.

是否可以将重叠I/O与匿名管道一起使用?CreatePipe()没有任何指定FILE_FLAG_OVERLAPPED的方法,所以我假设ReadFile()将阻塞,即使我提供了OVERLAPPED结构.

winapi pipe

13
推荐指数
3
解决办法
8201
查看次数

跨平台IPC

我正在寻找有关可能的IPC机制的建议:

  • 跨平台(至少Win32和Linux)
  • 易于在C++中实现以及最常见的脚本语言(perl,ruby,python等).
  • 最后,从编程的角度来看简单易用!

我的选择是什么?我正在Linux下编程,但我希望将来我写的可以移植到其他操作系统.我曾考虑使用套接字,命名管道或DBus之类的东西.

cross-platform ipc

72
推荐指数
9
解决办法
4万
查看次数

ASP.NET - 是否可以从服务器代码触发回发?

是否可以以编程方式从ASP.NET中的服务器代码触发回发?我知道可以做一个Response.Redirect或Server.Transfer重定向到一个页面,但有没有办法在服务器代码中触发回发到同一页面(不使用javascript技巧提交表单)?

asp.net postback

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