好吧,我只是想试试C ++(我现在做C#),现在我的第一个问题是类实例化或在另一个类中调用方法。
这是我的代码: 我的主要计划条目:
#include <iostream>
#include "myClass.h"
using namespace std;
int main()
{
myClass* mc = new myClass();
}
我正试图访问的课程:
#include "myClass.h"
myClass::myClass()
{
void DoSomething();
{
}
}
myClass::~myClass()
{
}
班级标题:
#pragma once
class myClass
{
public:
myClass();
~myClass();
};
现在您可以看到我已经实例化了该类,但我无法访问DoSomething()方法。
答案 0 :(得分:6)
这段代码只是声明一个本地函数,并且有一个空洞的乐趣:
myClass::myClass()
{
void DoSomething(); // local function declaration
{
// empty scope
}
}
如果您希望doSomething()
成为myclass
的成员,则必须在类定义中声明它:
class myClass
{
public:
myClass();
~myClass();
void doSomething();
};
然后实现它
void myclass::doSomething() { .... }
另请注意,您不必在C ++中的任何地方使用new
。您可以实例化一个这样的对象:
int main()
{
myClass mc;
}
另请注意,using namespace std;
无论如何都不是一个好主意,至少不是真正的代码。
答案 1 :(得分:2)
这是构造函数中的函数声明(+ {}中的一个ampty范围。
myClass::myClass()
{
void DoSomething();
{
}
}
你想要在类体(不是在构造函数中)中的函数声明和这个函数的定义(这可以与声明一起立即完成,或者稍后在这里完成):
class myClass
{
public:
myClass();
~myClass();
void doSomething();
};
构造函数的实现:
myClass::myClass() { .... }
实现你的功能,类似:
void myClass::doSomething() { .... }
答案 2 :(得分:1)
您尝试在main中使用的方法必须是类定义的一部分。您可以编写内联函数,也可以单独定义该函数。此外,您需要公开该功能才能从main访问它。