2014-01-22 176 views
0

好吧,我只是想给C++一个尝试(我目前做C#),现在我的第一个问题是类实例化或调用另一个类中的方法。C++类实例化和调用方法

这里是我的代码: 我的主要程序条目:

#include <iostream> 
#include "myClass.h" 
using namespace std; 
    int main() 
    { 
     myClass* mc = new myClass(); 
    } 

的Class我试图访问:

#include "myClass.h" 
myClass::myClass() 
{ 
    void DoSomething(); 
    { 

    } 
} 
myClass::~myClass() 
{ 
} 

类的头:

#pragma once 
class myClass 
{ 
public: 
    myClass(); 
    ~myClass(); 
}; 

现在正如你可以看到我已经实例化类,但我不能访问DoSomething()方法。

回答

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;是不是一个好主意,无论如何,至少在真正的代码。

+0

他甚至不需要命名空间,因为他没有使用它的任何东西。 – edmz

+0

非常感谢您的帮助。 – NetInfo

2

这是一个构造函数中的函数声明(+ {}中的一个空范围)。

myClass::myClass() 
{ 
    void DoSomething(); 
    { 

    } 
} 

你想在类主体(未在构造函数)和这个函数的定义函数声明(这可以立即连同申报这里完成或更高版本的IE):

class myClass 
{ 
public: 
    myClass(); 
    ~myClass(); 
    void doSomething(); 
}; 

实施构造函数:

myClass::myClass() { .... } 

实现你的功能,类似于:

void myClass::doSomething() { .... } 
+0

感谢您的帮助,对不起,我只能选择一个答案:) – NetInfo

+0

刚刚做了,再次感谢。 – NetInfo

1

您尝试在main中使用的方法必须是类定义的一部分。您可以编写内联函数,也可以具有该函数的单独定义。此外,您需要公开该功能才能从main访问它。