#include"MyString.h"
#include<iostream>
MyString::MyString()//default constructor
{
length=0;
data=NULL;
cout<<"Default called by right none is called"<<endl;
system("pause");
}
MyString::MyString(char *source)//cstyle string parameter
{
int counter=0;
//we implement count without using getlen
for(int i=0;(source[i])!='\0';i++)//assume their char string is terminated by null
{
counter++;
}
length=counter;
cout<<"THE LENGTH of "<<source<<" is "<<counter<<endl;
system("pause");
data = new char[length];
}
void MyString::print(ostream a)//what to put in besides ostream
{
a<<data;
}
上記これは私のメインのファイルにC++シンプルCOUTのostreamに
int main()
{
MyString s1("abcd");// constructor with cstyle style array
s1.print(cout);
system("pause");
return 0;
}
なぜカントこの作品で私の実装ファイルに
のですか? Imは、このエラーに
エラーC2248取得:
万人をプライベートメンバにアクセスすることはできませんクラスで宣言 'のstd :: basic_ios < _Elem、_Traits>': 'のstd :: basic_ios < _Elem、_Traits> :: basic_ios' をありがとう!エラーが修正されました!そのオブジェクトのコピーコンストラクタがプライベートであるため、あなたはstd::cout
、std::cin
、std::cerr
、またはstd::ios_base
由来の他のオブジェクトのコピーを作成することはできません
わからないことが(詳細に見なくても)動作していないですが、あなたは同じようにあなたのクラスでの99.9999%をI/Oの実装を検討することをお勧めします理由C++コーダーはそうです。これにより、C++の半分のコーディングとCの半分のコーディングではなく、 'operator <<'を使用しています:-) – paxdiablo