小编hmj*_*mjd的帖子

从专门的模板结构/类继承

是否可以继承如下的专用结构/类?

template<class TKey, class TData>
struct Container
{
    virtual void Add(TKey key, TData data) = 0;
};

template<class TData>
struct Container<int, TData>
{
    virtual void Add(int key, TData data) = 0;
};

struct TicketContainer : public Container<std::string>
{
    void Add(int key, std::string data)
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

我在TicketContainer声明错误而抱怨声明的模板参数太少。

c++ inheritance template-specialization

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

无法在android中的服务中启动计时器

我不知道发生了什么错误......我无法在我的服务中启动计时器.遵循代码

public class BkgService extends Service{

private Timer ServUpdTimer = new Timer();
private static  long TMR_INTERVAL = 10*60*1000;

public void onCreate() {
    super.onCreate();
    StartServUpdateTask();
    }

private void StartServUpdateTask() {

        if(ServUpdTimer != null)
            ServUpdTimer.cancel();


        ServUpdTimer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
            }
        }, 0, TMR_INTERVAL);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我到达线路时,ServUpdTimer.scheduleAtFixedRate()我得到以下异常

03-03 23:32:14.851:E/AndroidRuntime(6083):java.lang.RuntimeException:无法使用Intent {cmp = mt.android.app/.BkgService}启动服务mt.android.app.BkgService@40544838: java.lang.IllegalStateException:计时器已取消

如果有人可以对此有所了解,我将非常感激...

java service android timer

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

std :: getline不接受std :: back_insert_iterator

int main() { 
    std::deque<std::string> mydeque;
    std::back_insert_iterator<decltype(mydeque)> myback_insert_iterator(mydeque);
    std::ifstream myifstream("test.txt");
    while(std::getline(myifstream, *myback_insert_iterator)) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我只想将文本文件逐行读入字符串容器.这会产生编译错误:

C2784:无法从'std :: ifstream'推断'std :: basic_istream <_Elem,_Traits>&'的模板参数

怎么了?

c++ stl

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

将局部变量传递给线程.可能吗?

我正在研究gcc,我想知道这是否可行:

我有一个函数(NOTmain但是aLocalFn),我在其中声明了一个局部变量.然后我将此局部参数作为线程参数传递.它可行吗?或者有机会(取决于先运行的是什么)在运行threadFunction之前aLocalVar会丢失,而引用idxPtr将指向无意义?

int *threadFunction(void *idxPtr){
    int rec_idx=(int) *idxPtr;

    //work in the thread with this variabel rec_idx
}

int aLocalFn(){
   int aLocalVar=returnsRecordIndex();

   pthread_create(&thread_id,&attr_detached,threadFunction, &aLocalVar)!=0)
   return 0;
}   
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

c multithreading arguments local-variables

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

使用大括号(语法)进行C++对象初始化

我刚遇到这行代码:

SDL_Color textColor = { 255, 0, 255 };
Run Code Online (Sandbox Code Playgroud)

它让我想知道为什么它可以被声明为数组.我认为它可能只是textColor(255,0,255);一样,但当我尝试自己上课时,它并没有像那样工作.任何人都可以解释何时使用这种语法?参数在哪里??

c++ syntax

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

对Gd使用std :: list迭代器的"auto"关键字

我写C++应用程序应当编译在Windows和GCC上Linux.I都使用MS C++写了一个循环在Windows上通过的std ::列表,它迭代:

 auto  iter = container.GetObj()->begin();
 while (iter!=container.GetObj()->end()){

   (*(iter++))->Execute();

 }
Run Code Online (Sandbox Code Playgroud)

它工作正常,但用GCC编译时"auto"无法识别:

未检测到的令牌"auto" (在NetBeans IDE中)

所以我修复了它"明确定义迭代器:

 std::list<Container*>::iterator iter=container.GetObj()->begin();
 while (iter!=container.GetObj()->end()){

   (*(iter++))->Execute();

 }
Run Code Online (Sandbox Code Playgroud)

我的GCC版本是4.7.2

这是否意味着GCC不支持auto关键字?可能我需要升级编译器吗?

c++ gcc c++11

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

*array []是什么意思?

在c中,如果我声明如下:

char *somarray[] = {"Hello"};
Run Code Online (Sandbox Code Playgroud)

这是什么意思 ?

如果我打印它:

somarray - >给我一个堆栈中的内存地址

&somarray - >同样的事情,堆栈内存地址,但..

*somarray - >给我一个常量的内存地址

我实际上可以*somarray用来打印字符串.

到底是怎么回事?

c arrays

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

使用boost foreach和自己模板的项目

我有一个std::deque< std::pair<int, int> >我想迭代使用BOOST_FOREACH.

我尝试了以下方法:

  #define foreach_ BOOST_FOREACH

  // declaration of the std::deque
  std::deque< std::pair<int, int> > chosen;

  foreach_( std::pair<int,int> p, chosen )
  {
     ... 
  }
Run Code Online (Sandbox Code Playgroud)

但是当我编译它(在Visual Studio中)时,我收到以下错误:

warning C4002: too many actual parameters for macro 'BOOST_FOREACH'
1>c:\users\beeband\tests.cpp(133): error C2143: syntax error : missing ')' before '>'
1>c:\users\beeband\tests.cpp(133): error C2059: syntax error : '>'
1>c:\users\beeband\tests.cpp(133): error C2059: syntax error : ')'
1>c:\users\beeband\tests.cpp(133): error C2143: syntax error : missing ';' before '{'
1>c:\users\beeband\tests.cpp(133): error C2181: illegal else …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-foreach

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

我可以使用成员函数作为EnumWindows的第一个参数

我可以使用成员函数作为第一个参数EnumWindows吗?在这种情况下我甚至没有看到任何解决方法boost::bind.

c++ windows winapi

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

Apache Derby:实现'SELECT INTO'行为

MS SQL Server中可以将查询结果存储到表中,最重要的是,让查询创建表:

SELECT an_existing_column
INTO table_xyz
FROM an_existing_table
Run Code Online (Sandbox Code Playgroud)

这在MySQL中也可以使用:

CREATE TABLE table_xyz
SELECT an_existing_column
FROM an_existing_table
Run Code Online (Sandbox Code Playgroud)

我搜索了Apache Derby参考指南,但看不到实现类似行为的方法.

有没有人知道这在Apache Derby中是否可行?

java sql jdbc derby

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