小编Jja*_*ang的帖子

c ++中的静态计数器

我正在尝试创建一个Data类,其对象每个都拥有唯一的ID.

我希望第一个对象的ID为1,第二个为2,等等.我必须使用a static int,但所有对象都具有相同的ID,而不是1,2,3 ......

这是Data班级:

class Data
{
private:
   static int ID;
public:
   Data(){
   ID++;
   }
};
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,所以第一个ID将是1,第二个将是2,等等.?

c++ static counter class

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

在FOR循环中声明变量

我知道在C++中你可以在FOR中的变量上声明,例如:

for(int i=0; i<10; i++)
Run Code Online (Sandbox Code Playgroud)

有没有办法在for中声明另一个变量?这对我不起作用:

for(int i=0, char Ch='J'; i<10; i++)
Run Code Online (Sandbox Code Playgroud)

c++ loops declare

4
推荐指数
3
解决办法
2125
查看次数

为引用成员变量提供默认值

所以我在c ++中创建了一个有2个引用类型成员的类:

class Edge{
private:
const Node& base;
const Node& target;

public:
    Edge(const Node& new1, const Node& new2);
Run Code Online (Sandbox Code Playgroud)

我想在C'tor中给出base和target的默认值.意思就是:

Edge()
Run Code Online (Sandbox Code Playgroud)

不会出错,但会创建一个Edge对象.我怎么做?

编辑:我也想做:

Edge::Edge(const Node& newBase, const Node& newTarg)
{
    m_base=newBase;
    m_target=newTarg;
}
Run Code Online (Sandbox Code Playgroud)

但它不会让我,它说没有运营商"="匹配这些运营商.但我确实为节点做了一个"="运算符并检查它是否有效.......

c++ constructor reference class object-lifetime

0
推荐指数
1
解决办法
2024
查看次数

在继承c ++中重载

所以我在尝试在c ++中重载时遇到了这个问题:我有这些类:

class Data
{
public:
    void virtual f(){cout<<"In data!"<<endl;}
};

class A: public Data
{
public:
    void f(int x){cout<<"Class A int is: "<<x<<endl;}

};
Run Code Online (Sandbox Code Playgroud)

然后我做:

Data *D=new A();
D->f(4);
Run Code Online (Sandbox Code Playgroud)

我希望Data的f()函数可以做到A类的f()函数,因为我是虚拟的,但事实并非如此.

有什么方法可以使它工作?

c++ inheritance overloading

0
推荐指数
1
解决办法
146
查看次数