中学校でコンピュータ部に所属している者です。
JavaやC#の様なstring型をC++で実現しようとstrクラスを作っているのですが,
g++でコンパイルする度に警告がでます。
以下にコードを示します。
C++
1//C:\DEV\str.h 2 3#include <cstring> 4 5class str { 6 public : 7 ~str(); 8 str& operator=(char *p); 9 //+= , + , 等価演算子・比較演算子は後で実装 10 //private : //一時的にコメントアウト 11 char *pstr = 0; 12}; 13 14str::~str() { if(this->pstr != 0) { delete[] this->pstr; } } 15 16str& str::operator=(char *p) 17{ 18 unsigned int count = std::strlen(p); 19 20 if(this->pstr != 0) { delete[] this->pstr; } 21 this->pstr = new char[count]; 22 while(count != 0) 23 { 24 this->pstr[count] = *(p + count); 25 count--; 26 } 27 this->pstr[0] = *p; 28 29 return *this; 30} 31
C++
1//C:\DEV\test.cpp 2#include <cstdio> 3#include "str.h" 4 5int main() 6{ 7 str s; 8 s = "This is test."; 9 std::puts(s.pstr); 10 11 return 0; 12}
コンパイル
c: cd \DEV g++ test.cpp
結果
test.cpp: In function 'int main()': test.cpp:7:6: warning: ISO C++ forbits converting a string constant to 'char*' [-Wwrite-strings] s = "This is test."; ^^^^^^^^^^^^^^^
環境
OS:Windows10 Home 64bit
コンパイラ:MinGW-W64
[別件] ヘッダに(メンバ関数の)定義を置いちゃダメ!
回答3件
あなたの回答
tips
プレビュー