簡體   English   中英

C ++內部類無法編譯

[英]C++ inner classes not compiling

我有一個名為Song的班級,與Inner class Creator一起使用。 下面是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);

{}代表定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM