2016-04-14 12 views
-2

私はC++を学びたいC#プログラマーです。C++プログラム内または静的クラス内の関数を持つCソースファイル?

私は静的クラスを使用して、インスタンスをクラスなしで使用します。 C++のようなものがありますか?

私はこの関数を見つけました。私はC++プログラムでC関数を持つことができるのか、すべての関数がクラスのメソッドでなければならないのか分かりません。

vector<string> split(string str, char delimiter) { 
    vector<string> internal; 
    stringstream ss(str); // Turn the string into a stream. 
    string tok; 

    while(getline(ss, tok, delimiter)) { 
    internal.push_back(tok); 
    } 

    return internal; 
} 

CソースプログラムをC++プログラムに含めることはできますか?またはstaticメソッドでstaticクラスが必要ですか?

+0

C++はCのスーパーセットなので、Cスタイルのコーディングとメソッドはいつでも使用できます。ここで試したことがうまくいったのですか? – tadman

+0

はい、C++ではクラスレス関数を持つことができます。しかし、それは "C関数"にはなりません。 – zneak

+0

[クラスのメンバーではない関数を持つことができます](http://stackoverflow.com/q/4861914/1171191)[静的関数を持つことができます。](http://www.learncpp.com/cpp-tutorial/812-static-member-functions /) – BoBTFish

答えて

2

はい関数はC++でクラスである必要はありませんが。 しかし、複数のソースファイルがある場合は、おそらくヘッダーにその関数のプロトタイプを提供したいと思うでしょう。

あなたはスプリット機能を使用する必要がある時はいつでもそうsplit.hpp

#include <vector> 
#include <string> 
using namespace std; 
vector<string> split(string str, char delimiter); 

に続いてsplit.cpp

#include "split.hpp" 
vector<string> split(string str, char delimiter) { 
    vector<string> internal; 
    stringstream ss(str); // Turn the string into a stream. 
    string tok; 

    while(getline(ss, tok, delimiter)) { 
    internal.push_back(tok); 
    } 

    return internal; 
} 

に次に、あなただけの#include「split.hppを使用してヘッダーを含めることができます"あなたがすべてのメソッドを配置する必要がC#ので

#include <iostream> 
void main() 
{ 
    std::cout << "Hello world" << std::endl; 
} 

0

あなたはstatic機能持つことができます。

class Test { 
    public: 
     Test() {} 

     static int GetData() { 
      return 1; 
     } 

     int GetMoreData() const { 
      return 2; 
     } 
}; 

Test::GetData(); // call this function without an instance of a class 

Test A; 
A.GetMoreData(); // you can only call this with an instance of a class 
0

あなたはC++でクラスを持っている必要はありません、あなたは、単に機能を持たせることができる、cppファイルに次のことは有効なプログラムですあなたが静的なクラスを持っている理由です。

クラスの一部ではないメソッドを名前で呼び出すだけで、いつでも利用できます。多くの場合、それらはグローバルな方法と呼ばれています。

名前空間を使用するとあいまいさを避けることができますが、それはこの質問よりも少し複雑です。

関連する問題