小编Per*_*est的帖子

如何写一个像"size_t s = 16 MByte"的文字常量?

今天在我们的代码库中发现了以下行并且喜欢它的优雅来编写内存大小.想知道这是如何编译的几分钟.

size_t poolSize = 16 MByte;
Run Code Online (Sandbox Code Playgroud)

一个解决方案是我自己的答案.还有其他方法吗?

c++

40
推荐指数
4
解决办法
4073
查看次数

什么表达式创建xvalues?

我正在尝试理解C++ 11的概念.

我所说的标准草案:

xvalue("eXpiring"值)也指对象,通常接近其生命周期的末尾(例如,可以移动其资源).xvalue是涉及rvalue引用的某些表达式的结果(8.3.2).[示例:调用返回类型为右值引用的函数的结果是xvalue. - 末端的例子]

那么,产生xvalues的"某种表达式" 到底什么?规范的这一部分没有详细说明这些表达式的列表.

我理解左值和右值(至少我认为,我理解).

c++ language-lawyer xvalue c++11

25
推荐指数
2
解决办法
4091
查看次数

为什么需要std :: move?

我在C++ 11中阅读了一篇关于移动语义的精彩文章.本文以非常直观的方式编写.下面给出了本文中的示例类.

class ArrayWrapper 
{ 
public: 
    // default constructor produces a moderately sized array 
    ArrayWrapper () 
        : _p_vals( new int[ 64 ] ) 
        , _metadata( 64, "ArrayWrapper" ) 
    {} 

    ArrayWrapper (int n) 
        : _p_vals( new int[ n ] ) 
        , _metadata( n, "ArrayWrapper" ) 
    {} 

    // move constructor 
    ArrayWrapper (ArrayWrapper&& other) 
        : _p_vals( other._p_vals  ) 
        , _metadata( other._metadata ) 
    { 
        other._p_vals = NULL; 
    } 

    // copy constructor 
    ArrayWrapper (const ArrayWrapper& other) 
        : _p_vals( new int[ other._metadata.getSize() …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

11
推荐指数
2
解决办法
543
查看次数

如何将批处理文件中的所有函数打包为单独的文件?

我的问题与这个问题有关.我有几堆需要从批处理文件执行的操作,我想将它们建模为函数并从主序列调用.从上面的问题来看,很明显我可以用调用语法来做到这一点

call:myDosFunc
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以将所有这些函数放在一个单独的批处理文件(functions.bat)中,并以某种方式'包含'在主批处理文件中并调用它们吗?另一种选择是利用调用syntaxt从main.bat调用functions.bat的可能性,但我不确定是否可以使用特定函数调用它而不是执行整个批处理文件.

简而言之,我正在寻找类似于C编程世界的东西,其中我的函数驻留在DLL中,主程序只包含高级逻辑并从DLL调用函数.

windows command-line batch-file

11
推荐指数
2
解决办法
9219
查看次数

这个语法是什么意思?

我刚才看到SO问题中的特殊语法.

class B{
    A a;
    public:
        B() try : a() {} catch(string& s) { cout << &s << " " << s << endl; };
};
Run Code Online (Sandbox Code Playgroud)

这个函数外面的try-catch-block是什么意思?

c++ syntax

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

如何调用静态对象的私有析构函数?

可能重复:
无法访问singleton类析构函数中的私有成员

我正在实现如下单例.

class A
{
public:

    static A& instance();
private:
    A(void)
    {
        cout << "In the constructor" << endl;
    }
    ~A(void)
    {
        cout << "In the destructor" << endl;
    }

};

A& A::instance()
{
    static A theMainInstance;
    return theMainInstance;
}

int main()
{
    A& a = A::instance();

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

析构函数是私有的.当程序即将终止时,是否会调用对象theMainInstance?

我在Visual Studio 6中尝试了这个,它给出了编译错误.

"cannot access private member declared in class..."
Run Code Online (Sandbox Code Playgroud)

在visual studio 2010中,这被编译并且析构函数被调用.

根据标准,这里应该有什么期望?

编辑:由于Visual Studio 6的行为不那么愚蠢,因此出现了混乱.可以说,静态对象的A的构造函数是在A的函数的上下文中调用的.但是析构函数不是在同一函数的上下文中调用的.这是从全局上下文中调用的.

c++ standards static destructor

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

对象版本控制模式

我正在尝试在我们的域中建模我们的一些对象,并遇到了一些问题,其中一些对象可以被版本化.即,用户可以在一段时间内创建新的对象版本.所以,我需要在程序中对它们进行建模.我认为这是SW设计中的常见问题.

最初,我跳到了模仿源代码控制版本控制概念的想法,并提出了一个版本化的对象概念和方法,如签入,签出等.但是,我觉得它不是那么'系统',因为我没有'探索模式(即,我觉得像犯罪一样犯罪

  • 我没有涉及寻找多个解决方案等方面
  • 寻找可以给我更多可靠参考文献的文学作品.

所以,我目前的问题是,对于系统建模,我需要搜索解决版本建模问题的模式,最好是在文献中.当然,要充分利用它.

所以,我搜索了这样的模式,只发现了一个时间对象模式.但是,我不确定这是不是我想要的.你们对这种模式有什么建议吗?

[自我编辑]也许我没有很好地描述这个问题.您可以看到类似于源控制文件版本问题的问题.我有几种类型的对象(存储在数据库中),可以有多个版本.在我的应用程序中,我必须处理所有这些版本,我还必须创建新版本的对象(最终将存储在数据库中).我期待的是某种可引用的模式,我可以使用它模拟接口来访问/修改/添加这些对象的新版本.我可以想出的基本界面是IVersionedObject,其中包括checkout,checkin,undoCheckout等等.但是,这是我自己观察源控制系统的想法.我不认为它是SW设计模式.因此,期待针对上述问题的一些记录良好的设计模式.

oop design-patterns

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

为什么C++仍然有delete []和delete运算符?

使用单个关键字实现删除数组难吗?效率低下吗?

c++ arrays syntax memory-management

5
推荐指数
4
解决办法
386
查看次数

无法在离线模式下构建Android Hello World应用程序

我是Android开发的新手.我在一个没有互联网连接的系统上工作.我已经安装了新的Android Developer工作室,声称支持离线开发.我已将Gradle更新为1.9(将下载的zip文件复制到文件夹"C:\ Documents and Settings\.gradle\wrapper\dists\gradle-1.9-all\3jdgemv0iv8uqohg3kcp2o88r1".显然开发人员工作室确实检测到了这个并解压缩该文件夹中的gradle.

在此之后我创建了一个新的HelloWorld项目并尝试构建它,我收到以下错误.

Gradle: A problem occurred configuring project ':app'.

> Could not resolve all dependencies for configuration ':app:classpath'.

   > Could not resolve com.android.tools.build:gradle:0.7.+.
     Required by:
        HellowWorld1:app:unspecified

      > No cached version of com.android.tools.build:gradle:0.7.+ available for offline mode.
Run Code Online (Sandbox Code Playgroud)

你知道是什么原因造成的吗?我该如何解决这个问题?是否有任何其他文件我应该使用手动安装的Gradle版本的信息更新?

java android build gradle

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

异步是否会在此示例中带来任何好处?

我正在尝试学习C#中的机制asyncawait机制.

最简单的例子我很清楚.

这条线

Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
Run Code Online (Sandbox Code Playgroud)

触发异步Web调用.控件返回AccessTheWebAsync().它是免费的DoIndependentWork().这样做了以后它等待任务的完成getStringTask,当这个结果可在函数执行的下一行 return urlContents.Length; 所以,据我了解的目的async呼叫,让呼叫者执行其他操作时,标签的操作与async在进展.

但是,在这个函数中,我对这个例子有点困惑.

    private async Task<byte[]> GetURLContentsAsync(string url)
    {
        // The downloaded resource ends up in the variable named content. 
        var content = new MemoryStream();

        // Initialize an HttpWebRequest for the current URL. 
        var webReq = (HttpWebRequest)WebRequest.Create(url);

        // Send the request to the Internet resource and wait for 
        // the response.                 
        using (WebResponse …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous async-await

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