我的代码中出现了一个错误,我根本没有。
这是我的代码:
MyClass.h
#include "MyClass.h"
int i = 1;
MyClass::MyClass()
{
}
MyClass:~MyClass()
{
}
MyClass.cpp #pragma一次
class MyClass
{
public:
MyClass();
virtual ~MyClass();
int i;
protected:
private:
};
的main.cpp
#include<iostream>
#include "MyClass.h"
using namespace std;
int main()
{
MyClass myObject = *new MyClass();
cout << myObject.i << endl;
cin.get();
}
我只是得到一些随机数。这里有什么帮助吗?
答案 0 :(得分:2)
您没有在班级中初始化i
,您的构造函数应该如下所示:
MyClass::MyClass() : i(1)
{}
看起来你也有一些错别字,这个:
MyClass myObject = *new MyClass();
应该是:
MyClass *myObject = new MyClass();
和此:
cout << myObject.i << endl;
应该是:
cout << myObject->i << endl;
虽然,克里斯说更简单的选项如下:
MyClass myObject ;
cout << myObject.i << endl;
答案 1 :(得分:0)
您设置为1的i不是该类的成员。它是任何类之外的静态变量。
答案 2 :(得分:0)
一旦我属于你的类,你需要在它的构造函数
中初始化它#include "MyClass.h"
// int i = 1; <-- not here
MyClass::MyClass()
{
i = 1; // here
}
并在main函数中初始化对象,只需执行以下操作:
int main()
{
// MyClass myObject = *new MyClass(); <-- myObject is not a pointer
MyClass myObject;
cout << myObject.i << endl;
cin.get();
}
答案 3 :(得分:0)
//int i = 1;
MyClass::MyClass() : i(1)
{
}
其次,你在main()中声明对象的方式也是错误的。要么你这样做:
int main()
{
MyClass* myObject = new MyClass();
cout << myObject->i << endl;
cin.get();
delete myObject;
}
如果你想要一个指向动态分配对象的指针或只是
int main()
{
MyClass myObject;
cout << myObject.i << endl;
cin.get();
}
如果你想在堆栈上分配一个对象。