2014-01-22 211 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訪問它。