-1

C++ での合成について教えてください。User.h を含むクラス User があります。

class User
{
public:
    std::string getName();
    void changeName(std::string nName);
    std::string getGroup();
    void changeGroup(std::string nGroup);

    User(std::string nName, std::string nGroup);
    ~User(void);
private:
    std::string name;
    std::string group;
};

ここで、Honeypot クラスで次のように定義します。

ハニーポット.h:

class Honeypot
{
public:
    User us;

私はコンストラクタを持っています:

Honeypot (std::string name, std::string ip, int numberOfInterfaces, std::string os);

Honeypot.cpp で:

Honeypot::Honeypot(std::string name, std::string ip, int numberOfInterfaces, std::string os):us(nName, nGroup){
    this->name = name;
    this->ip = ip;
    this-> numberOfInterfaces = numberOfInterfaces; 
    this->os = os;
}

しかし、この構文は正しくありません。エラーは次のとおりです。

IntelliSense: expected a ')', 'nGroup' : undeclared identifier  and more on line :us(nName, nGroup){...

ご協力ありがとう御座います。

4

1 に答える 1

2

nName と nGroup は、Honeypot コンストラクターのパラメーターである必要があります。コンパイラが示すように、それらは宣言されていません。

Honeypot::Honeypot(std::string name, std::string ip, 
                   int numberOfInterfaces, std::string os, 
                   std::string userName, std::string userGroup) 
    : us(userName, userGroup)
{
    this->name = name;
    this->ip = ip;
    this->numberOfInterfaces = numberOfInterfaces; 
    this->os = os;
}
于 2013-05-29T22:35:27.533 に答える