小编def*_*ode的帖子

非静态与静态函数和变量

我有一个关于静态和非静态函数和变量的问题.

1)非静态函数访问静态变量.

没关系!

class Bar
{
public:

     static int i;

     void nonStaticFunction() {

         Bar::i = 10;

     }

};

int Bar::i=0;
Run Code Online (Sandbox Code Playgroud)

2)非静态函数访问非静态变量

绝对可以!

3)静态函数访问静态变量和函数

绝对可以!

4)静态功能访问非静态功能

没关系

class Bar
{
public:
     static void staticFunction( const Bar & bar)
     {
         bar.memberFunction();

     }

     void memberFunction() const
     {

     }

}
Run Code Online (Sandbox Code Playgroud)

5)静态函数访问非静态变量

好还是不行?我对此感到困惑!

这个例子怎么样?

class Bar
{
public:
     static void staticFunction( Bar & bar)
     {
         bar.memberFunction();

     }

     void memberFunction()
     {

         i = 0;
     }

     int i;

};
Run Code Online (Sandbox Code Playgroud)

c++

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

Boost绑定占位符参数等于Variadic Template参数的数量

我想知道是否可以在boost :: bind调用中使用传递给可变参数模板的参数数量作为占位符.

像这样的东西:

template <typename ... Args>

boost::bind(&function, this, anArg, _1));         //If Args count equals 1
boost::bind(&function, this, anArg, _1, _2));     //If Args count equals 2
boost::bind(&function, this, anArg, _1, _2, _3)); //If Args count equals 3
Run Code Online (Sandbox Code Playgroud)

这可能吗?

谢谢

c++ templates boost bind variadic-templates

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

与游戏开发和VirtualBox等应用程序相比,C++在.NET方面有什么优势

这是试图改述我之前提出的问题.我想知道为什么C++似乎是某些胖客户端应用程序的首选语言.我能想到的最简单的例子是视频游戏和我最喜欢的应用程序VirtualBox.

请不要关闭这篇文章我只是想了解为什么会这样.

.net c++

9
推荐指数
3
解决办法
1355
查看次数

D编程和iPhone

我刚开始学习"D编程".我想在iPhone上部署我的程序.这让我感到疑惑; 有可能使用D?开发Mac或iPhone.我希望应用程序完全写入D或至少是最小的目标-c.通过选择D而不是其他主流语言(c/c ++/java/objective-c/c#),我开始了一场毫无希望的战斗吗?

iphone macos d

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

io_service :: run()的专用线程

我想提供一个io_service由一个全局线程驱动的全局.很简单,我只是有线程体调用io_service::run().然而,这并不为工作run(run_one,poll,poll_one)的回报,如果没有工作要做.但是,如果线程反复调用run(),它将在没有任何事情要做时忙于循环.

我正在寻找一种方法来阻止线程,而在io_service中没有任何工作要做.我可以在混合中添加一个全局事件来阻止线程.但是,这将要求用户io_service每次使用该服务时都通知该事件.不是理想的解决方案.

注意:没有实际的全局变量,我从不使用事件进行并发我只是将问题简化为我的确切需要.真正的目标是一个asio::deadline_timer子类,它不需要io_service作为构造参数.

c++ concurrency boost-asio

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

如何使用python挂载网络目录?

我需要在linux机器上使用python在网络机器"data"上挂载目录"dir"

我知道我可以通过命令行发送命令:

mkdir ~/mnt/data_dir
mount -t data:/dir/ ~/mnt/data_dir
Run Code Online (Sandbox Code Playgroud)

但我如何从python脚本发送这些命令?

python linux scripting mount

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

如何使用doxygen记录函数对象?

我应该如何使用doxygen记录函数对象(AKA仿函数)?将其记录为普通班级会让人觉得误导.我发现将函数对象视为具有闭包的函数比使用可调用类更好.

有没有办法记录符合我的偏好的函数对象?

class Adder
{
public:
   Adder( size_t x ) :
      m_x(x)
   { }

   size_t operator () ( size_t y ) const
   {
      return m_x + y;
   }

private:
   const size_t m_x;
};
Run Code Online (Sandbox Code Playgroud)

c++ doxygen functor function-object

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

安全的跨平台协同程序

我遇到的所有协程实现都使用汇编或检查内容jmp_buf.这个问题是它本身不是跨平台的.

我认为以下实现不会进入未定义的行为或依赖于实现细节.但我从来没有遇到像这样写的协程.

是否有一些固有的缺陷是使用线程跳远?
这段代码中有一些隐藏的问题吗?

#include <setjmp.h>
#include <thread>

class Coroutine
{
public:
   Coroutine( void ) :
      m_done( false ),
      m_thread( [&](){ this->start(); } )
   { }

   ~Coroutine( void )
   {
      std::lock_guard<std::mutex> lock( m_mutex );

      m_done = true;
      m_condition.notify_one();

      m_thread.join();
   }

   void start( void )
   {
      if( setjmp( m_resume ) == 0 )
      {
         std::unique_lock<std::mutex> lock( m_mutex );
         m_condition.wait( lock, [&](){ return m_done; } );
      }
      else
      {
         routine();
         longjmp( m_yield, 1 );
      }
   }

   void resume( void ) …
Run Code Online (Sandbox Code Playgroud)

c++ cross-platform coroutine c++11

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

如何沙箱去一个程序

问:有没有办法沙盒Go程序?
答:是的.参见GAE w/Goplay.golang.org

这是怎么做到的?

在我的特定情况下,我想允许用Go编写的不受信任的扩展.我想Go Goground正是我所需要的.它是开源的吗?或者至少有一些关于如何构建类似服务的文档?

注意:

code.google.com/p/go-playground是Go Playground编辑器的源代码.但沙箱隐藏在POST后面http://golang.org/compile?output=json.

sandbox go

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

可以安全地重用sync.WaitGroup吗?

sync.WaitGroup后可重复使用Wait()被称为?

func worker(who string, in <-chan int, wg *sync.WaitGroup) {
    for i := range in {
        fmt.Println(who, i)
        wg.Done()
    }
}

func main() {
    var wg sync.WaitGroup

    AIn := make(chan int, 1)
    BIn := make(chan int, 1)

    go worker("a:", AIn, &wg)
    go worker("b:", BIn, &wg)

    for i := 0; i < 4; i++ {
        wg.Add(2)
        AIn <- i
        BIn <- i
        wg.Wait()
        fmt.Println("main:", i)
    }
}
Run Code Online (Sandbox Code Playgroud)

这个play.golang.org/p/QLsvA-b4Ae按预期运行,但它是否保证安全?文档没有这么说,但也许我只是偏执狂.

go

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