小编Ste*_*ve 的帖子

c ++持久化数据

我想要存档的是一些简单的方法来使一些变量持久化.为此,我写了一个PeristenceProvider类,它包含boost属性树功能,用于在xml/ini文件中存储数据.

目前我需要做这样的事情:

ClassA::ClassA()
{
   m_valueI = PersistenceProvider::getInstance.get<int>("valueI");
}

ClassA::~ClassA()
{
    PeristenceProvider::getInstance.set<int>("valueI", m_valueI);
}
Run Code Online (Sandbox Code Playgroud)

但是有机会以这样的方式隐藏它:

class ClassA
{
     Persist<int, "valueI"> m_ValueI;
}
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

C++如何区分容器模板和本机类型

我有以下问题:

template<class T>
void set(std::string path, const T data)
{
   stringstream ss;
   ss << data << std::endl;
   write(path, ss.str();
}

template<class T>
void set(std::string path, const T data)
{
    std::stringstream ss;
    for(typename T::const_iterator it = data.begin(); it < data.end(); ++it)
    {
       ss << *it;
       if(it < data.end() -1 )
          ss << ", ";
    }
    ss << std::endl;
    write(path, ss.str());
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

error: ‘template<class T> void myclass::set(std::string, T)’ cannot be overloaded
error: with ‘template<class T> void myclass::set(std::string, T)’
Run Code Online (Sandbox Code Playgroud)

有没有办法区分容器类型和模板中的其他类型?

c++ templates

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

shared_ptr找不到虚方法

我有一个abstact基类,在它的构造函数中调用一个虚方法.在传递一个shared_ptr基类之后,找不到该方法的实现.

class a 
{
 public:
   a() { fill(); }
 protected:
   virtual void fill() = 0;
}

class b : public a
{
public:
   b() : a();
protected:
   virtual void fill() { // do something }
} 
....

shared_ptr<a> sptr = shared_ptr<a> ( new b()): // error happens here on runtime
Run Code Online (Sandbox Code Playgroud)

执行此操作时,我得到一个SIGABRT,因为它试图执行 virtual void fill() = 0;

c++ shared-ptr

5
推荐指数
1
解决办法
1511
查看次数

CDT在"设置索引器"期间发生内部错误

我使用Eclipse和CDT来构建C++代码.加载我的工作区后,我收到以下消息:

An internal error occurred during: "Setting up indexer".
Run Code Online (Sandbox Code Playgroud)

这是日志:

eclipse.buildId=I20110613-1736
java.version=1.6.0_24
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86

!ENTRY org.eclipse.core.jobs 4 2 2012-10-30 16:46:09.940
!MESSAGE An internal error occurred during: "Setting up indexer".
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 18
    at org.eclipse.cdt.internal.core.pdom.db.Database.getChunk(Database.java:274)
    at org.eclipse.cdt.internal.core.pdom.db.Database.getRecPtr(Database.java:477)
    at org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage.getLinkageID(PDOMLinkage.java:119)
    at org.eclipse.cdt.internal.core.pdom.PDOM.readLinkages(PDOM.java:351)
    at org.eclipse.cdt.internal.core.pdom.PDOM.loadDatabase(PDOM.java:334)
    at org.eclipse.cdt.internal.core.pdom.PDOM.<init>(PDOM.java:310)
    at org.eclipse.cdt.internal.core.pdom.WritablePDOM.<init>(WritablePDOM.java:57)
    at org.eclipse.cdt.internal.core.pdom.WritablePDOM.<init>(WritablePDOM.java:52)
    at org.eclipse.cdt.internal.core.pdom.PDOMManager.getOrCreatePDOM(PDOMManager.java:370)
    at org.eclipse.cdt.internal.core.pdom.PDOMManager.createIndexer(PDOMManager.java:554)
    at org.eclipse.cdt.internal.core.pdom.PDOMSetupJob.run(PDOMSetupJob.java:58)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)  
Run Code Online (Sandbox Code Playgroud)

我该如何修复/重置?

c++ eclipse indexer eclipse-cdt

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

shared_ptr的隐式转换

我有两个类U和T的shared_ptrs,其中T是U的基础.

这是没有问题的,从做一个隐式转换shared_ptr<U>shared_ptr<T>.但也有可能做到转换shared_ptr<T>shared_ptr<U>

我尝试了这种消化的解决方案:

class T {
public:
  virtual ~T() {}
protected: 
  void fillData() = 0;
};

class Timpl : public T 
{ 
public:
  virtual ~Timpl() {}
protected:
  virtual void fillData() = 0;
};

class U : public Timpl {
public: 
  virtual ~U() {}
protected: 
  virtual void fillData() {...} // fill 
};

typedef  shared_ptr<T> TPtr
typedef  shared_ptr<U> UPtr


TPtr tp = std::make_shared<U>();  
UPtr up = std::static_pointer_cast<U>(tp);    //<-- error here :
Run Code Online (Sandbox Code Playgroud)

错误:没有匹配函数来调用'static_pointer_cast(TPtr)'

注意:模板std :: …

c++ shared-ptr

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

标签 统计

c++ ×5

shared-ptr ×2

templates ×2

eclipse ×1

eclipse-cdt ×1

indexer ×1