小编rah*_*man的帖子

什么是C++中的::*

当我面对时,我正在阅读基本的C++教程

::*
Run Code Online (Sandbox Code Playgroud)

在以下代码中.我可以知道那是什么:

class A {
public:
protected:
  int i;
};


class B : public A {
  friend void f(A*, B*);
  void g(A*);
};

void f(A* pa, B* pb) {
//  pa->i = 1;
  pb->i = 2;

//  int A::* point_i = &A::i;
  int A::* point_i2 = &B::i;
}

void B::g(A* pa) {
//  pa->i = 1;
  i = 2;

//  int A::* point_i = &A::i;
  int A::* point_i2 = &B::i;
}

void h(A* pa, B* pb) {
//  pa->i …
Run Code Online (Sandbox Code Playgroud)

c++

7
推荐指数
2
解决办法
8094
查看次数

如何处理C中的free()错误?

假设我使用了一个free()函数来释放内存,由于种种原因,我不允许这样做.如何阻止我的C应用程序崩溃并只生成错误并继续执行?我这里没有try-catch类的规定(比如C++/java ...).有没有办法忽略这个错误并继续执行?

如是,

  1. 你是怎样做的?
  2. 更重要的是,这样做是否可取(考虑到发生内存错误,继续执行)?

谢谢

c free exception-handling

5
推荐指数
2
解决办法
9070
查看次数

eclipse中的unique_ptr自动完成

我正在玩unique_ptr.在我的一篇文章中,人们通过在编译期间指定-std = c ++ 0x来帮助我编译使用此指针的程序.现在我想知道是否有任何方法可以指示eclipse在自动完成时考虑c ++ 11?
unique_ptr没有进入std :: namespace列表,也没有找到与unique_ptr相关的方法(reset,move ...).

谢谢vahid

c++ eclipse linux stl unique-ptr

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

将const放在以下C++语句中的好地方是什么?

考虑以下类成员:

std::vector<sim_mob::Lane *>  IncomingLanes_;
Run Code Online (Sandbox Code Playgroud)

上面的容器应该将指针存储到我的Lane对象中.我不希望子程序使用此变量作为参数,以便能够修改Lane对象.与此同时,我不知道在哪里放'const'关键字不能阻止我填充容器.

你能帮帮我吗?

谢谢你,并感谢vahid

编辑: 根据我到目前为止得到的答案(非常感谢他们所有)假设这个样本:

#include <vector>
#include<iostream>
using namespace std;

class Lane
{
private:
    int a;
public:
    Lane(int h):a(h){}
    void setA(int a_)
    {
        a=a_;
    }
    void printLane()
    {
        std::cout << a << std::endl;
    }
};

class B
{

public:
    vector< Lane const  *> IncomingLanes;
    void addLane(Lane  *l)
    {
        IncomingLanes.push_back(l);
    }

};

int main()
{
    Lane l1(1);
    Lane l2(2);
    B b;
    b.addLane(&l1);
    b.addLane(&l2);
    b.IncomingLanes.at(1)->printLane();
    b.IncomingLanes.at(1)->setA(12);
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

我的意思是:

b.IncomingLanes.at(1) - > printLane()

应该在没有问题的IncomingLanes上工作

b.IncomingLanes.at(1) - …

c++

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

如何使用const getters对std :: set进行排序

我有一个std :: set容器,其元素是以下类的对象:

class LaneConnector {
public:

    const Lane* getLaneFrom() const {
        return From;
    }
    const Lane* getLaneTo() const {
        return To;
    }

private:

    Lane* From;
    Lane* To;
}
Run Code Online (Sandbox Code Playgroud)

我的比较器功能如下:

struct MyLaneConectorSorter {
  bool operator() (LaneConnector * c, LaneConnector * d)
  {
      Lane* a = const_cast<Lane*>(c->getLaneFrom());
      Lane* b = const_cast<Lane*>(d->getLaneFrom());
      return (a->getLaneID() < b->getLaneID());
  }
} myLaneConnectorSorter;
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试对集合中的元素进行排序时:

//dont panic, the container just came through a const_iterator of a std::map :)
const std::set<LaneConnector*> & tempLC = (*it_cnn).second;
std::sort(tempLC.begin(), tempLC.end(), myLaneConnectorSorter); …
Run Code Online (Sandbox Code Playgroud)

c++ sorting set

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

如何在配置文件中隐藏数据库密码

我正在研究一个需要访问数据库以读取其输入的C++项目.

到目前为止,我们在基于xml的配置文件中使用了默认用户名(postgres)和"固定明文"密码以及许多其他设置.

现在我需要的是在提供配置文件时隐藏用户的密码.

仅供参考:开发区域是linux,数据库是postgresql.我们希望为用户提供连接数据库的配置文件,并在不知道密码的情况下使用它

如果您建议快速简单的参考,我将不胜感激.(一个小的阅读材料也会很棒)

谢谢

c++ database passwords configuration-files

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

将最近的提交转移到另一个分支

我为一些测试目的创建了一个额外的分支.

在开始工作之前,我切换回主分支,喝完茶后,我开始添加文件并修改master分支中的其他文件.

只有在我提交之后,我才记得我在主分支中,而在开始更改之前我必须切换到我的第二分支.

如果可以将此提交发送到第二个分支并从主分支中删除它,您能告诉我吗?

谢谢

git

5
推荐指数
2
解决办法
836
查看次数

如何跟踪 std::stringstream 中的当前位置

我正在编写一个自定义记录器,我将日志消息缓冲在 a 中,std::stringstream并在文件足够大std::ofstream时将其刷新到文件 ( ) 中std::stringstream(以节省一些 IO 延迟)。由于std::stringstream没有.size()方法,我使用seekgtellg

template <typename T>
MyClass & operator<< (const T& val)
{
    boost::unique_lock<boost::mutex> lock(mutexOutput);
    output << val;  //std::stringstream output;
    output.seekg(0, std::ios::end);
    if(output.tellg() > 1048576/*1MB*/){
        flushLog();
    }
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

问题:在我看来,每当我调用此方法时,它都会seekg从头到尾开始计算字节数,并使用tellg. 我想出这个设计首先是为了节省一些 IO 时间,但是:这种连续计数是否会带来更大的成本(如果在大多数情况下调用此方法的次数很高并且日志消息很小) )?

有一个更好的方法吗?

还有一个附带问题:1MB在当今的普通计算机中,缓冲区大小是一个很好的数字吗?

谢谢

c++ stringstream

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

导入错误:没有名为 mako 的模块

我已经在两个不同的位置安装了 python。我打开了两个终端设置环境变量,以便每个终端找到不同的 python 安装:

TERM1$which python
/A/python

TERM2$which python
/B/python
Run Code Online (Sandbox Code Playgroud)

后来我Mako使用其中一种安装方式进行安装(我不记得是哪一种了)。我使用以下命令在本地安装了 mako:

python setup.py install --user
Run Code Online (Sandbox Code Playgroud)

我的理解是,该模块将转到以下给出的路径:

$python -c 'import site; print site.USER_SITE'
/home/.../.local/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

如果我从任一终端/home运行上述命令,它会指向 my 中的同一位置。问题是,如果我运行:

python -c 'import mako'
Run Code Online (Sandbox Code Playgroud)

其中一个终端正常,但另一个终端出现错误:

ImportError: No module named mako
Run Code Online (Sandbox Code Playgroud)

最有可能的是,一个终端(env)与另一个终端的搜索路径不同。但不知道要检查什么!

python

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

如何初始化静态成员对象?

我不知道我不知道这个:).和类似的问题在这里并没有太大帮助.

所以我在这里问.请考虑以下课程:

//in Agent.h
class Agent : public ns3::Object{
private:
//...

    static BaseWifi m_wifi;

//...
};
Run Code Online (Sandbox Code Playgroud)

这是 :

//Agent.cpp
BaseWifi temp;
BaseWifi Agent::m_wifi = temp;
Run Code Online (Sandbox Code Playgroud)

与此截然不同:

//Agent.cpp
BaseWifi Agent::m_wifi = BaseWifi();
Run Code Online (Sandbox Code Playgroud)

第二种方法对我不起作用.为什么以及如何?

我不想用更多代码来麻烦你因为我在我的程序中遇到了这个问题.程序生成seg错误,因为内部BaseWifi构造函数中的(成员)未正确初始化.当使用那些未初始化的内部成员时,会发生seg错误.

提前感谢您的好意见和答案.

ps:事实上,当我还没有初始化这个静态成员并且我删除了一个额外的行时,我发现了这个问题:

BaseWifi temp;
Run Code Online (Sandbox Code Playgroud)

在我的main(),这增加了我的困惑!!!(这可能取决于我在BaseWifi构造函数中的内容,所以现在不要介意)

Update-1: 对于那些想要看BaseWifi的人:

class BaseWifi {
    ns3::WifiHelper m_wifiHelper; // a wifi helper apply to setup vehicles Wifi

    ns3::NqosWifiMacHelper m_wifiMacHelper; // a wifi mac helper apply to setup vehicles Wifi

    ns3::YansWifiPhyHelper m_wifiPhyHelper; // a wifi phy …
Run Code Online (Sandbox Code Playgroud)

c++ static

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