-2

我有一个包含向量的类,它还继承了另一个类:

class txtExt : public extention
{
private:
   string  openedFile_;
public:
   vector<string> txtVector; //the vector i want to call
};

我将向量填充到类中的方法中:

class Manager : public extention
{
   // there is some other code here that I know does work
   // and it calls this function:
   void organizeExtention(string filename, string ext)
   {
      if(ext == "txt")
      {
         txtExt txtExt;
         txtExt.txtVector.pushback(filename);
      }
   }
}

这是我尝试调用向量的主要课程:

int main()
{
   // some code here that does previous operations like getting the path
   // and filling the vector


   // I've tried many ways of trying to call the vector
   // here is an example of one:
   vector<txtExt*> testVector;
   for(int i = 0; i < testVector.size(); ++i)
   {
      cout << testVector[i] << endl;
   }
   return 0;
}

我有几个问题:

  1. 我把向量叫错了吗?
  2. 我的向量是空的吗?
  3. 我是否必须使我的向量全局化,以便其他类可以看到它?

注意:我已经能够使用非常简单的 for 循环打印出加载向量的向量

4

2 回答 2

1

好吧,正如已经说过的,您在发布的代码中有一些错误,您可能也有一些误解。但要回答所提出的问题,这

testVector[i]->txtVector

是访问txtVector每个对象内部的txtExt对象的方法。

如果这对您不起作用,那是因为您的代码中存在其他错误/误解之一。

于 2012-11-03T14:12:43.530 回答
0

总结一下:

重读一本好 C++ 书籍的第一章(The Definitive C++ Book Guide and List),然后尝试修复你的程序并同时处理每个错误。

您的代码中有几个错误。

  • 首先,没有<<用于打印 txtExt* 类型实体的运算符。
  • 即使是类型的对象txtExt也不能像那样打印。
  • 此外,您创建的 testVector 是空的,因此没有 .size() 将为零,并且不会有循环。
  • 你真的确定你喜欢从 'extension' 继承你的两个类吗?
  • 你不能调用向量,你可以访问它。
  • 公开一个数据成员(如向量)不是一个好主意。
  • 调用与类同名的变量是一个非常糟糕的主意。

我很难猜测你的代码应该做什么。这是您需要了解的简单示例:

#include <iostream>
#include <vector>
#include <string>

class TxtExt 
{
public:
  std::vector<std::string> txtVector; 
};

int main(){
  TxtExt oneTxtExt;

  oneTxtExt.txtVector.push_back("hello");
  oneTxtExt.txtVector.push_back("world");
  for( auto &i : oneTxtExt.txtVector ){
    std::cout << i <<std::endl;
  }
}

以下代码是正确的,但绝对没有效果。你也可以写{}

{
  TxtExt TxtExt;
  TxtExt.txtVector.pushback(filename);
}

您在这里创建一个新对象,然后推回它(顺便说一句,它被称为push_back),但随后该对象在作用域的末尾被销毁。另外,不要将对象命名为与类相同的名称,这会变得非常混乱。

于 2012-11-03T14:05:38.440 回答