簡體   English   中英

c++ 上的向量作為 class 的成員

[英]vector on c++ as a member into a class

我有一個問題,其中getUserOpinionVector()getAppConstructorVector()setUserOpinionVector()setAppConstructorVector()無法訪問UserOpinionVectorAppConstructorVector屬性。

有什么建議嗎?

我在下面粘貼了我的代碼。

注意:為簡單起見,跳過了構造函數和一些屬性和方法。

c++ 上的 .h 文件:

#ifndef APPLICATION_H
#define APPLICATION_H
#include "ApplicationConstructor.h"    
#include <vector>

using namespace std;

class Application{  
  private:
   ApplicationConstructor &AppConstructor;
   UserOpinion *UserView;
  public:
   Application(char *, string, string, ApplicationConstructor &, UserOpinion &, float); // Application's Constructor
   Application(const Application &); // Copy Constructor     
   vector<ApplicationConstructor &> getAppConstructorVector(); // Get the Application Constructor Vector
   vector<UserOpinion *> getUserOpinionVector(); // Get the User Opinion Vector       
   void setAppConstructorVector(vector<ApplicationConstructor &>); // Set the Application Constructor Vector
   void setUserOpinionVector(vector<UserOpinion *>); // Set the User Opinion Vector  
   virtual ~Application(); // Destructor
  protected:
   vector<ApplicationConstructor &> AppConstructorVector; // Vector with Application Constructor Objects
   vector<UserOpinion *> UserOpinionVector; // Vector pointers to with User Opinion Objects   
   };
   #endif /* APPLICATION_H */

cpp文件:

#include <iostream>
#include "Application.h"

//Constructor
Application::Application(char *applicationCode, string applicationName, float applicationVersion, 
                     ApplicationConstructor &appConstructor , UserOpinion *userComment, float price ):AppConstructor(appConstructor){
if ((this->AppConstructor != NULL) && (this->UserView != NULL ))
{
    this->addToAppConstructorVector(this->AppConstructor);
    this->addToUserOpinionVector(this->UserView);
}
}

// Set the Application Constructor Vector
void setAppConstructorVector(vector<ApplicationConstructor &> appConstructorVector){
   this->AppConstructorVector = appConstructorVector;
}

// Set the User Opinion Vector  
void setUserOpinionVector(vector<UserOpinion *> userOpinionVector){
   this->UserOpinionVector = userOpinionVector;
}

// Get the Application Constructor Vector
vector<ApplicationConstructor &> getAppConstructorVector(){
  return this->AppConstructorVector;
}

// Get the User Opinion Vector
vector<UserOpinion *> getUserOpinionVector(){
 return this->UserOpinionVector;
}        

這些函數應定義為 class Application的成員函數。

這意味着您應該在每個 function 名稱之前添加Application:: ,如下所示:

// Set the Application Constructor Vector
void Application::setAppConstructorVector(vector<ApplicationConstructor &> appConstructorVector){
   this->AppConstructorVector = appConstructorVector;
}

// Set the User Opinion Vector  
void Application::setUserOpinionVector(vector<UserOpinion *> userOpinionVector){
   this->UserOpinionVector = userOpinionVector;
}

// Get the Application Constructor Vector
vector<ApplicationConstructor &> Application::getAppConstructorVector(){
  return this->AppConstructorVector;
}

// Get the User Opinion Vector
vector<UserOpinion *> Application::getUserOpinionVector(){
 return this->UserOpinionVector;
}

除非您在 class 上聲明,否則您不能使用 function,這就是您無法訪問它的原因

// Set the User Opinion Vector  
void Application::setUserOpinionVector(vector<UserOpinion *> userOpinionVector){
   this->UserOpinionVector = userOpinionVector;
}

嘗試首先添加 class 的名稱,同時在 header 文件中將 function 添加為 public

class Application{  
  private:
   ApplicationConstructor &AppConstructor;
   UserOpinion *UserView;
  public:
   ....
   void setUserOpinionVector(vector<UserOpinion *> userOpinionVector)

希望能幫助到你

暫無
暫無

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

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