小编Raj*_*war的帖子

在单个解决方案中处理多个项目中的公共类

我目前有两个项目在我的解决方案中说项目A和项目B. 现在,项目A和B都使用类似的类,每个项目中都会找到每个类的副本.我想知道是否有更好的方法来完成这项任务.我希望在某个地方有一个单独的类,并让两个项目从那里访问公共类.推荐的方法是什么?

c# visual-studio-2010

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

将类从MFC移植到C++控制台应用程序.使用/ MD [d](CRT dll版本)构建MFC应用程序需要

我试图从基于MFC的应用程序移植某个功能.显然我没有MFC的经验.我感兴趣的类继承自CAsyncSocket.当在MSDN上查找该类时,它声明该类派生自afxsock.h.当我将它添加到我的控制台应用程序代码时,我收到以下错误消息

Error   1   error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]  d:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何建议?

sockets mfc visual-studio-2010 visual-c++

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

如何在std :: deque中避免`deque iterator not dereferencable`?锁?

目前在我的项目中我有两个静态方法PushObjectsProcessObject.该PushObject方法将数据推送到静态双端队列,这个方法可以被多个线程访问,但是ProcessObject它总是由单个线程使用,用于从顶部检索对象并删除它们.现在我的问题是无论我尝试什么我总是最终(迟早会得到一个deque iterator not dereferencable错误.关于我能做些什么来阻止这个问题的任何建议.我的摘要PushObjectsProcessObject下面给出的

    void foo::PushObjects(obj A)
    {
        try
        {
            {//Begin Lock
                boost::lock_guard<boost::mutex> lock(mutex_push);
                mydeque.push_back(A);
            }//End Lock
            condition_read.notify_one(); //Inform the reader that it could start reading 
        }
        catch (std::exception& e)
        {
            __debugbreak();
        }
    }


    This is the static Reader method

    void foo::ProcessObject()
    {
        {//Begin Lock
            boost::unique_lock<boost::mutex> lock(mutex_process);
            while(true)
            {
                    while(mydeque.empty()) { condition_read.wait(lock); }
                    try
                    {
                        if(!mydeque.empty())
                        {
                                obj a = mydeque.front();
                                ......Process the object........
                                mydeque.pop_front();
                        } …
Run Code Online (Sandbox Code Playgroud)

c++ mutex iterator deque

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

在Boost中实现自旋锁.需要的例子

我想知道boost是否有任何有助于实现自旋锁的库.我知道boost支持互斥锁,但我找不到任何在boost中显示或描述自旋锁的示例.显示如何使用boost(最好)实现自旋锁的示例将不胜感激.(C++ 98)

c++ boost spinlock c++98

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

static_cast - 为什么在这里工作?

我有以下代码片段

class base
{
public:
    virtual void MyMethod()
    {
        std::cout << "Base MyMethod" << "\n";
    }
};


class der : public base
{
public:
    virtual void MyMethod()
    {
        std::cout << "Derived MyMethod" << "\n";
    }
};


void foo(base* b)
{
    der* d = static_cast<der*>(b);
    d->MyMethod();
}

int main()
{
    base* b = new der();
    foo(b);
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是为什么 static_Cast 在这里工作。我读到 static_casts 不能通过多态类型进行转换。那么为什么上面的例子有效 - 我在这里遗漏了什么吗?我期望动态转换只能解决这样的问题,因为它们应该与多态类型一起使用?谁能举一个例子,静态转换会失败而动态转换会通过?

c++ static-cast

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

减少cpp文件中包含的数量

我目前在我的cpp文件中有大约50个或更多包含.我想知道组织这种情况的最佳政策是什么.我应该继续添加更多包含吗?或者我应该采取另一种方法?如果是这样,应该是什么?

c++

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

使用static_cast进行向下转换 - 指针和对象

说我有以下类类型

class base
{

};

class der : public base
{
};
Run Code Online (Sandbox Code Playgroud)

使用static_Cast,您可以使用对象和指针.

我试过以下 - 哪个有效(指针)

base* b = new base();
der * m = static_cast<der*>(b);
Run Code Online (Sandbox Code Playgroud)

但是以下不起作用

base b;
der m = static_cast<der>(b);
Run Code Online (Sandbox Code Playgroud)

有什么建议为什么第二个不起作用?静态转换不处理指针和对象吗?它适用于指针,但它不能与对象一起使用?

c++ pointers casting object static-cast

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

在移动构造函数的abscence中调用复制构造函数?这是为什么?

我正在阅读C++ 11,我有以下问题.假设我有以下粗略代码

class foo
{
public:
    foo()
    {std::cout << "Regular constructor \n";}

    foo(const foo& a) 
    {std::cout << "Copy constructor \n";}

    foo& operator=(const foo& a) 
    {std::cout << "Copy Assignment operator \n";}

    foo(foo&& a)
    {
        std::cout << "Move constructor \n";
    }

    foo& operator=(foo&& a) 
    {std::cout << "Move Assignment operator \n";}

    int a;
};


foo myfunction()
{
    foo d;
    d.a =120;
    return d;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我做这样的事情

foo a = myfunction();
Run Code Online (Sandbox Code Playgroud)

我知道将调用move构造函数,因为myfunction()返回一个rvalue类型.现在我注意到如果我从我的类中删除移动构造函数代码,则调用复制构造函数.我的问题是为什么会发生这种情况?如果myfunction的返回类型是foo &&并且复制构造函数接受foo,那么为什么要调用复制构造函数?我正在使用Vs2012.

c++ move-constructor c++11

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

左移特定号码.1s具体没有.时间

我想留下一个特定的号码.具体的没有.时间.我正在尝试这样的事情

//Left shift 3 1's by 5. 
int a = 0; 
a = 0b(111 << 5) ;  //Error : unable to find numeric literal
                    // operator 'operator""b'        
std::cout << a; //Should be 224
Run Code Online (Sandbox Code Playgroud)

关于如何解决上述问题的任何建议?理想情况下,我想要这样的东西

int a = 0;
int noOfOnes = 3;
a = 0b(noOfOnes << 5);
Run Code Online (Sandbox Code Playgroud)

我不确定如何在C++中完成上述操作?

c++ bit-manipulation bitmask bit-shift c++11

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

使用unit64_t左移 - 发出警告

我正在尝试执行以下操作.但是我不确定我哪里会出错

uint64_t x = (1 << 46); 
std::cout << x;
Run Code Online (Sandbox Code Playgroud)

我明白了

-warning:左移计数> =类型的宽度[-Wshift-count-overflow]

我得到输出0.我期待像这样的二进制的十进制输出

1 0000........00 (46 0s) 
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么我会收到这个警告?不是uint64_t 64位?为什么我得到输出0?

c++

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