0
私は内部クラスCreatorを持つSongというクラスを持っています。以下はSong.hファイルです。コメントを無視してください。ここ C++の内部クラスはコンパイルされていません
#ifndef SONG_H
#define SONG_H
#include <iostream>
class Song
{
public:
class Creator{
public:
//Creator& name(const std::string name){};
void name(const std::string name){};
//std::string getName(){};
};
private:
std::string mName;
};
#endif // SONG_H
と
はSong.cppクラス#include "Song.h"
using std::string;
//using Song::Creator;
//Song::Creator& Song::Creator::name(const string name)
void Song::Creator::name(const string name)
{
mName=name;
std::cout<<name;
//return *this;
}
//string Creator::getName()
//{
//return mName;
//}
とコンパイルにはメインクラス
#include <iostream>
#include "Song.h"
int main()
{
Song::Creator sc;
sc.name("vickey");
//std::cout<<sc.getName();
return 0;
}
それは
/home/vickey/qtprojects/innerClass-build-desktop-Desktop_Qt_4_8_0_for_GCC__Qt_SDK__Release/../innerClass/Song.cpp:6: error: redefinition of 'void Song::Creator::name(std::string)'
をスローしている私は、名前の機能を変更した場合〜
void Creator::name(const string name)
{
mName=name;
std::cout<<name;
//return *this;
}
私は私が間違ってやってmがいることは何か
/home/vickey/qtprojects/innerClass-build-desktop-Desktop_Qt_4_8_0_for_GCC__Qt_SDK__Release/../innerClass/Song.cpp:6: error: 'Creator' has not been declared
このエラーが出ますか?前もって感謝します。
スタイルアドバイス:「SONG_H」のような短い名前はいつか衝突する傾向があり、経験から見れば、ヘッダーガードの衝突は非常に混乱します。個人的に、私は ''を行います。 '#ifndef SONG_H_20120330'。同じ日に同じ名前のファイルが複数ある場合(この場合、 'SONG_20120330a'または' SONG_20120330_1959'と書いてください) –
これを念頭に置いておいてください –