目前,我試圖讓下面的代碼進行編譯:外部類內部類 - 實例化內部類作爲外部類的成員
terminallog.hh
#ifndef TERMINALLOG_HH
#define TERMINALLOG_HH
#include <string>
#include <sstream>
#include <iostream>
class Terminallog {
public:
Terminallog();
virtual ~Terminallog();
class Warn {
public:
Warn();
private:
bool lineended;
};
friend class Terminallog::Warn;
protected:
private:
Warn warn;
};
terminallog.cc
// stripped code
Terminallog::Terminallog() {
Warn this->warn();
}
Terminallog::Warn::Warn() {
this->lineended = true;
}
//stripped code
那麼,正如你可能猜到alredy,它的失敗;-)。我的編譯器說:
g++ src/terminallog.cc inc/terminallog.hh -o test -Wall -Werror
In file included from src/terminallog.cc:8:
src/../inc/terminallog.hh:56: error: declaration of ‘Terminallog::Warn Terminallog::warn’
src/../inc/terminallog.hh:24: error: conflicts with previous declaration ‘void Terminallog::warn(std::string)’
這讓我沒有選擇權。我顯然做錯了,但我不知道如何解決這個問題。我會很感激任何提示。
在此先感謝
ftiaronsem
閱讀您的錯誤信息 - 你不發佈正確的代碼 - 你有一個'警告warn'成員變量和一個'警告無效(的std :: string)'成員函數,將其重命名 – Erik 2011-03-27 17:19:17
之一@埃裏克。 Uups,完全正確,並且非常令人印象深刻;-)。這個班裏有更多的代碼,我剝奪了。非常感謝您指出這一點。 – ftiaronsem 2011-03-27 17:26:04