C ++类实例化和调用方法

时间:2014-01-22 17:38:22

标签: c++ methods instantiation

好吧,我只是想试试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()方法。

3 个答案:

答案 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访问它。