2017-06-20 10 views
1

私は以前のCの経験からどのようにしてC++に移行するのかという単純な概念に問題があります。 Cでは、コードベース全体で使用できるいくつかの構造型定義を持つヘッダーファイルが表示されます。私は、以下に似たC++クラスの使用状況を見た:C++クラスを使用して複数のデータ構造を定義する

//varTypes.h 
class varTypes 
{ 
    public: 
    struct TypeOne {int a; int b;}; 
    struct TypeTwo {int c; int d;}; 
} 

//varTypes.cpp 
include "varTypes.h" 

varTypes::TypeOne x {1, 1}; 
varTypes::TypeTwo y {1, 2}; 
varTypes::TypeTwo z {2, 4}; 

この場合、クラスが必要な場合にのみ、個別に使用することができます定義を含むために使用されているようです。これは本当ですか?または、クラスと2つの定義は、使用される各インスタンスのメンバとして常に存在します。つまり、x、y、zはvarTypeクラス全体のインスタンスとして、または個々の構造として終わりますか?名前空間としてないメンバ変数関数と基準

//varTypes.h 
struct TypeOne {int a; int b;}; 
struct TypeTwo {int c; int d;}; 

//varTypes.c 
include "varTypes.h" 

varTypes::TypeOne x {1, 1}; 
varTypes::TypeTwo y {1, 2}; 
varTypes::TypeTwo z {2, 4}; 
+4

Cで使用していたものを表示できますか?このクラスはすべてネームスペースのように動作します(ネストされたクラスの名前を外部クラスにスコープします)。 – NathanOliver

+1

注意深く見ると、クラスにはメンバー変数がありません。 varTypesオブジェクトは何も保持しません。 @ NathanOliverのように、それは単なる名前空間です。 –

+0

@ NathanOliver、Dave S、ありがとう、それは簡単な答えです。メンバ変数のないクラスは名前空間として機能します。何らかの理由でそれが私を逃れていた。参考のためにCコードを追加します。 –

答えて

0

クラスの

単純なCコード。

関連する問題