我正在尝试创建一个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++中你可以在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 ++中创建了一个有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 ++中重载时遇到了这个问题:我有这些类:
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++ ×4
class ×2
constructor ×1
counter ×1
declare ×1
inheritance ×1
loops ×1
overloading ×1
reference ×1
static ×1