私は名前空間を探索し、C で行う方法でサンプル ライブラリを作成しようとしています。これを C++ で行ったことがないので、ここで私が行っていることを示します。これは正常に動作し、別のファイルに入れたい私のコードです。
#include <iostream>
#include <string>
namespace TCS{
class employee{
int uID;
std::string name;
public:
employee(const int& uId, const std::string& name)
{
this->uID=uId;
(this->name).assign(name);
}
int getID()
{
return uID;
}
std::string getName()
{
return name;
}
};
}
using namespace std;
class employee{
int uID;
string name;
public:
employee(const int& uId, const string& name)
{
this->uID=uId;
(this->name).assign(name);
}
int getID()
{
return uID;
}
string getName()
{
return name;
}
};
int main()
{
employee TechMEmp1(1,"Andrew");
TCS::employee TCSEmp1(1,"Thomas");
cout << "Tech M Employee is :- ID : " << TechMEmp1.getID() << " Name : "
<< TechMEmp1.getName() << endl;
cout << "TCS Employee is :- ID : " << TCSEmp1.getID() << " Name : "
<< TCSEmp1.getName() << endl;
return 0;
}
今、私はコンテンツをCの別々のファイルに入れる方法を複製しようとしています.コンテンツを含むTCS.hファイルをcteatedしました:
#ifndef TCS_HEADER
#define TCS_HEADER
namespace TCS{
class employee{
int uID;
std::string name;
public:
employee(const int& uId, const std::string& name);
int getID();
std::string getName();
};
}
#endif
別のファイル: コンテンツを含む TCSNamespace.cpp
#include "TCS.h"
#include <string>
TCS::employee(const int& uId, const std::string& name);
{
this->uID=uId;
(this->name).assign(name);
}
int TCS::getID();
{
return uID;
}
std::string TCS::getName();
{
return name;
}
そして、メインを含む私の最終的なファイルは次のとおりです。
#include <iostream>
#include <string>
#include "TCS.h"
using namespace std;
class employee{
int uID;
string name;
public:
employee(const int& uId, const string& name)
{
this->uID=uId;
(this->name).assign(name);
}
int getID()
{
return uID;
}
string getName()
{
return name;
}
};
int main()
{
employee TechMEmp1(1,"Andrew Thomas");
TCS::employee TCSEmp1(1,"Thomas Hula");
cout << "Tech M Employee is :- ID : " << TechMEmp1.getID() << " Name : "
<< TechMEmp1.getName() << endl;
cout << "TCS Employee is :- ID : " << TCSEmp1.getID() << " Name : "
<< TCSEmp1.getName() << endl;
return 0;
}
Cygwin を使用しており、次のコマンドを入力すると、ファイルを個別にコンパイルしようとします: g++ -Wall -c TCSNamespace.cpp (これにより、c ファイルをコンパイルする方法で TCSNamespace.cpp がコンパイルされると思います):
$ g++ -Wall -c TCSNamespace.cpp
In file included from TCSNamespace.cpp:1:
TCS.h:6: error: using-declaration for non-member at class scope
TCS.h:6: error: expected `;' before "name"
TCS.h:8: error: expected unqualified-id before '&' token
TCS.h:8: error: expected `,' or `...' before '&' token
TCS.h:8: error: ISO C++ forbids declaration of `parameter' with no type
TCS.h:10: error: using-declaration for non-member at class scope
TCS.h:10: error: expected `;' before "getName"
TCSNamespace.cpp:4: error: expected constructor, destructor, or type conversion before ';' token
TCSNamespace.cpp:5: error: expected unqualified-id before '{' token
TCSNamespace.cpp:5: error: expected `,' or `;' before '{' token
TCSNamespace.cpp:9: error: `int TCS::getID()' should have been declared inside `TCS'
TCSNamespace.cpp:10: error: expected unqualified-id before '{' token
TCSNamespace.cpp:10: error: expected `,' or `;' before '{' token
TCSNamespace.cpp:13: error: `std::string TCS::getName()' should have been declared inside `TCS'
TCSNamespace.cpp:14: error: expected unqualified-id before '{' token
TCSNamespace.cpp:14: error: expected `,' or `;' before '{' token
私がやろうとしているのは、TCSNamespace.cpp と Namespace.cpp を個別にコンパイルし、それらをリンクして、以下のコマンドで実行可能ファイルを取得することです。
g++ -Wall -c TCSNamespace.cpp
g++ -Wall -c Namespace.cpp
gcc TCSNamespace.o Namespace.o –o Namespace
どこが間違っているのか教えてください。また、C++ で "TCS.h" を作成するのと同じ方法で C++ を作成することも知りたいです。C++ はヘッダーのタイプを使用するため、それは良い習慣です。
ありがとう