C++内部类未编译

C++ inner classes not compiling

本文关键字:编译 内部类 C++      更新时间:2023-10-16

我有一个名为Song的类,它具有内部类创建者。下面是Song.h文件。请忽略评论。

#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;
}

我收到这个错误

/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

我做错了什么?提前谢谢。

从类声明中删除定义:

void  name(const std::string name){};

更改为

void  name(const std::string name);

{}表示一个定义。