1

クラスにファイルを含めて使用できるようにする方法はありますが、そのクラスをスコープに含めて使用できるようにすることはできませんか? 簡単にするために、IO というクラスに iostream ヘッダーがあり、IO が cout 関数を使用して書き込みできるようにしますが、IO を含むものはすべて iostream ヘッダーで使用できるようにしないとします。それは私がやりたいことではありませんが、物事を「二重定義」しないように、これを理解する必要があります。

4

2 に答える 2

5

はい、できます。 に含めcppないでhください。

// IO.h
// note the lack of #include <iostream>

class IO
{
     // IO stuff...
     void f();
};

次にcpp

// IO.cpp
#include "IO.h"
#include <iostream>

IO::void f()
{
    std::cout << "Hello world!" << '\n';
}

IO.h含めていない他のファイルに含める場合は、コンパイル単位の概念<iostream>を確認してください。

于 2013-01-15T07:57:13.787 に答える
3

この問題の一般的な解決策は、別のヘッダー/ソース ファイルのペアで IO を宣言することです。ヘッダーで必要なクラスを宣言し、ソース ファイルで必要なヘッダーを含めます。この方法では、ヘッダーの実際の内容はソース ファイルでのみアクセスできます。

于 2013-01-15T07:53:55.153 に答える