当我面对时,我正在阅读基本的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) 假设我使用了一个free()函数来释放内存,由于种种原因,我不允许这样做.如何阻止我的C应用程序崩溃并只生成错误并继续执行?我这里没有try-catch类的规定(比如C++/java ...).有没有办法忽略这个错误并继续执行?
如是,
谢谢
考虑以下类成员:
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) - …
我有一个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++项目.
到目前为止,我们在基于xml的配置文件中使用了默认用户名(postgres)和"固定明文"密码以及许多其他设置.
现在我需要的是在提供配置文件时隐藏用户的密码.
仅供参考:开发区域是linux,数据库是postgresql.我们希望为用户提供连接数据库的配置文件,并在不知道密码的情况下使用它
如果您建议快速简单的参考,我将不胜感激.(一个小的阅读材料也会很棒)
谢谢
我为一些测试目的创建了一个额外的分支.
在开始工作之前,我切换回主分支,喝完茶后,我开始添加文件并修改master分支中的其他文件.
只有在我提交之后,我才记得我在主分支中,而在开始更改之前我必须切换到我的第二分支.
如果可以将此提交发送到第二个分支并从主分支中删除它,您能告诉我吗?
谢谢
我正在编写一个自定义记录器,我将日志消息缓冲在 a 中,std::stringstream并在文件足够大std::ofstream时将其刷新到文件 ( ) 中std::stringstream(以节省一些 IO 延迟)。由于std::stringstream没有.size()方法,我使用seekg和tellg:
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在当今的普通计算机中,缓冲区大小是一个很好的数字吗?
谢谢
我已经在两个不同的位置安装了 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)与另一个终端的搜索路径不同。但不知道要检查什么!
我不知道我不知道这个:).和类似的问题在这里并没有太大帮助.
所以我在这里问.请考虑以下课程:
//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)