小编Ecl*_*pse的帖子

如何将BOOST包装在单独的命名空间中?

我希望同时将两个版本的BOOST编译成一个项目.理想情况下,它们应该可用于以下方面:

boost_1_36_0::boost::shared_ptr<SomeClass> someClass = new SomeClass();
boost_1_35_0::boost::regex expression("[0-9]", boost_1_35_0::boost::regex_constants::basic);
Run Code Online (Sandbox Code Playgroud)

c++ boost namespaces

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

哪些标准c ++类不能在c ++中重新实现?

我正在查看C++ 0x的计划,并std::initializer_list在用户类中实现初始化列表.如果不使用它本身,或者使用一些"编译魔术",这个类就不能用C++实现.如果可以,则不需要它,因为您实现的任何技术initializer_list都可用于在您自己的类中实现初始化列表.

还有哪些类需要某种形式的"编译魔术"才能工作?标准库中哪些类无法由第三方库实现?

编辑:也许不是实现,我应该说实例化.事实上,这个类与语言功能直接相关(你不能使用初始化列表initializer_list).

与C#进行比较可能会清除我想知道的内容:IEnumerable和IDisposable实际上是硬编码为语言功能.我一直认为C++是免费的,因为Stroustrup试图让所有东西都可以在库中实现.那么,是否有任何其他类/类型与语言功能密不可分.

c++ compiler-construction

9
推荐指数
2
解决办法
1131
查看次数

使用dynamic_cast转换const类

我想投这个:

class Base 
{
public:
    virtual ~Base(){};
};
class Der : public Base {};

int main()
{
    const Base* base = new Der;
    Der* der = dynamic_cast<Der*>(base); // Error

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?我试图把:const Der* der = dynamic_cast<Der*>(base);保留const但这不起作用.

c++ dynamic-cast const

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

这个批处理文件究竟应该做什么?

这在.bat文件中有什么作用?

它是某种汇编语言还是什么?

    @debug <%0 >nul
    e100 48 e6 61 be 3f 01 31 db 8a 1c 80 fb ff 74 f4 81
    e110 c3 d0 00 b0 b6 e6 43 31 d2 66 b8 dd 34 12 00 66
    e120 f7 f3 e6 42 88 e0 e6 42 46 8a 0c 46 ba da 03 ec
    e130 a8 08 74 fb ec a8 08 75 fb fe c9 74 c9 eb f0 00
    e140 0c 19 0c 45 0c 19 …

obfuscation hex batch-file

8
推荐指数
3
解决办法
2125
查看次数

Canonical运算符重载?

是否有规范或推荐的模式用于在类似C++的类中实现算术运算符重载?

从C++ FAQ中,我们有一个异常安全的赋值运算符,可以避免大多数问题:

class NumberImpl;

class Number {
   NumberImpl *Impl;

   ...
};

Number& Number::operator=(const Number &rhs)
{
   NumberImpl* tmp = new NumberImpl(*rhs.Impl);
   delete Impl;
   Impl = tmp;
   return *this;
}
Run Code Online (Sandbox Code Playgroud)

但对于其他运算符(+,+ =等等),除了使它们的行为类似于内置类型的运算符之外,给出的建议很少.

有没有一种标准的方法来定义这些?这就是我想出来的 - 我有没有看到陷阱?

// Member operator
Number& Number::operator+= (const Number &rhs)
{
    Impl->Value += rhs.Impl->Value; // Obviously this is more complicated
    return *this;
}

// Non-member non-friend addition operator
Number operator+(Number lhs, const Number &rhs)
{
     return lhs += rhs;
}
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading

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

有没有办法通过 SMB 共享上的创建时间来枚举文件?

我正在寻找一种在 SMB 远程共享上检索比特定日期/时间更新的文件的方法,所有这些都在 Windows 下工作。我一直在使用DirectoryInfo.EnumerateFiles(), 并在返回时进行过滤。不幸的是,这意味着每个文件记录都在我查看之前通过网络发送,并且随着文件列表的增长,情况变得越来越糟。

我一直在与第三方供应商合作,因此我无法选择删除旧文件,而且我无法在我正在读取的文件服务器上运行任何代码。

我已经能够通过 p/invoking FindFirstFileEx/FindNextFile和使用FindExInfoBasicandFIND_FIRST_EX_LARGE_FETCH标志获得一些临时改进,但理想情况下,我想将日期时间过滤器卸载到服务器,并且只通过网络发送我需要的文件记录。是否有一些我找不到的 API 可以提供帮助?

c# windows smb winapi

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

使用EnterCriticalSection的问题

我需要处理来自多个线程的数组,因此我使用CRITICAL SECTION为它提供对数据的独占访问.
这是我的模板:

#include "stdafx.h"
#ifndef SHAREDVECTOR_H
#define SHAREDVECTOR_H

#include <vector>
#include <windows.h>

template<class T>
class SharedVector {
    std::vector<T> vect;
    CRITICAL_SECTION cs;
    SharedVector(const SharedVector<T>& rhs) {}
public:
    SharedVector();
    explicit SharedVector(const CRITICAL_SECTION& CS);
    void PushBack(const T& value);
    void PopBack();
    unsigned int size() const;
    T& operator[](int index);
    virtual ~SharedVector();
};

template<class T>
SharedVector<T>::SharedVector() {
    InitializeCriticalSection(&cs);
}

template<class T>
SharedVector<T>::SharedVector(const CRITICAL_SECTION& r): cs(r) {
    InitializeCriticalSection(&cs);
}

template<class T>
void SharedVector<T>::PushBack(const T& value) {
    EnterCriticalSection(&cs);
    vect.push_back(value);
    LeaveCriticalSection(&cs);
}

template<class T>
void SharedVector<T>::PopBack() {
    EnterCriticalSection(&cs); …
Run Code Online (Sandbox Code Playgroud)

c++ winapi critical-section

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

如何在WPF Expander控件上设置TabIndex?

在此示例窗口中,Tabbing through从第一个文本框转到最后一个文本框,然后转到扩展器标题.

<Window x:Class="ExpanderTab.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
    FocusManager.FocusedElement="{Binding ElementName=FirstField}">
    <StackPanel>
        <TextBox TabIndex="10" Name="FirstField"></TextBox>
        <Expander TabIndex="20" Header="_abc">
            <TextBox TabIndex="30"></TextBox>
        </Expander>
        <TextBox TabIndex="40"></TextBox>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

显然,我希望这是第一个文本框,扩展器标题,然后是最后一个文本框.有没有一种简单的方法可以将TabIndex分配给扩展器的标头?

我已经尝试强制扩展器使用tabstop KeyboardNavigation.IsTabStop="True",但这会使整个扩展器获得焦点,并且整个扩展器不会对空格键做出反应.再过两次选项卡后,再次选择标题,我可以用空格键打开它.

编辑:我会为那些能够提出更清洁方式的人提供奖励 - 如果没有,那么rmoore,你可以拥有代表.谢谢你的帮助.

wpf expander keyboard-navigation

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

Windows 7小工具不释放ActiveX对象

我正在开发一个需要从excel文档中提取数据的Windows 7小工具.问题是,在我检索到我需要的数据后,Excel进程是不会卸载的.

这是我在初始化函数中使用的代码:

    var Excel = new ActiveXObject("Excel.Application");
    Excel.Visible = false;
    Excel.DisplayAlerts = false;
    var workbooks = Excel.Workbooks;
    var workbook = workbooks.Open("\\\\SERVER\\Documents\\Sample.xlsx", 0, true);
    var activesheet = workbook.ActiveSheet;
    var cell = sheet.Cells(1, 1);
    var value = cell.Value;
    document.getElementById("content").innerHTML = value;
    delete value;
    value = null;
    delete cell;
    cell = null;
    delete activesheet;
    activesheet = null;
    delete workbook;
    workbook = null;
    delete workbooks;
    workbooks = null;
    Excel.Quit();
    delete Excel;
    Excel = null;
Run Code Online (Sandbox Code Playgroud)

这都包含在try-catch块中,我可以验证它是否都成功.所有删除和空分配都是我试图释放对COM对象的任何引用,但我似乎缺少了一些东西.有什么办法可以强制Excel进程卸载吗?

javascript excel activex windows-desktop-gadgets

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

如何在文件系统中找到循环?

如何在Linux中找到文件系统中的循环?我正在索引所有文件以便快速搜索(O(1))...我正在使用c编程语言来实现dir.h中的库函数....我可以扫描整个文件系统但它进入一个循环,如果文件系统中有循环(示例循环安装)...如何在文件系统中找到循环..我已经看到当文件系统中有循环时updatedb命令报告...我不明白逻辑...任何人都可以帮忙找到解决方案吗?

c linux

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

显示多态类

我有一个带有命令行界面的现有app,我正在添加GUI.经常出现的一种情况是,我有一个从一个类继承的对象列表,需要显示在列表中,但每个子类的显示方式略有不同.

不希望在任何地方使用反射/ RTTI进行显示的巨型switch语句,每个类都知道如何返回自己的汇总字符串,然后在列表中显示:

int position = 0;
for (vector<DisplayableObject>::const_iterator iDisp = listToDisplay.begin(); iDisp != listToDisplay.end(); ++iDisp)
    cout << ++position << ". " << iDisp->GetSummary();
Run Code Online (Sandbox Code Playgroud)

类似的功能用于在不同的上下文中显示不同的信息.在我们需要添加GUI之前,这一切都很好.字符串不再足够 - 我需要创建图形控件.

我不想修改每个类以便能够在GUI中显示它 - 特别是因为至少还有一个GUI平台我们想要将它移动到.

是否有某种技术可以用来将这个GUI代码从数据对象中分离出来而不需要使用RTTI和switch语句?能够取出GetSummary函数会很高兴.

理想情况下,我可以拥有一个显示类的层次结构,可以获取数据类并根据运行时类型而不是编译时类型显示它:

shared_ptr<Displayer> displayer = new ConsoleDisplayer(); 
// or new GUIDisplayer()

for (vector<DisplayableObject>::const_iterator iDisp = listToDisplay.begin(); iDisp != listToDisplay.end(); ++iDisp)
    displayer->Display(*iDisp);
Run Code Online (Sandbox Code Playgroud)

c++ user-interface separation-of-concerns

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

如何将几个字符从char []复制到C中的char*?

呦!

我正在尝试将一些字符从char []复制到char*.我只想要从索引6到(消息长度 - 9)的字符.

也许代码示例将更多地解释我的问题:

char buffer[512] = "GET /testfile.htm HTTP/1.0";
char* filename; // I want *filename to hold only "/testfile.htm"

msgLen = recv(connecting_socket, buffer, 512, 0);
strncpy(filename, buffer+5, msgLen-9);
Run Code Online (Sandbox Code Playgroud)

任何回应都会有所帮助!

c unix

3
推荐指数
2
解决办法
574
查看次数

删除聚合类的顺序是什么?

假设我有一个聚合B和C的基本A类:

class A  
{  
    B _b;  
    C _c;  
} 
Run Code Online (Sandbox Code Playgroud)

以什么顺序_b和_c将被删除?
我在某个地方读过这是他们分配的相反顺序.
所以我想在这个小例子_c在_b之前被删除了吧?

现在,如果我有一个看起来像这样的A构造函数:

A::A():  
_c(...),  
_b(...)  
{  
}
Run Code Online (Sandbox Code Playgroud)

_b和_c的构造函数以什么顺序调用?
如果_b的构造函数确实在_c之前被调用(关于它们在A中的顺序),那么我发现它真的反直觉!

在这种情况下,破坏的顺序是什么?

谢谢你的帮助 !:)

(在旁注中我似乎完全无法在Stackoverflow的编辑器中键入'}'.必须从外部编辑器复制和粘贴!?)

c++

3
推荐指数
2
解决办法
129
查看次数