【问题标题】:Compile error unqualified-id before之前编译错误 unqualified-id
【发布时间】:2009-10-23 07:37:49
【问题描述】:

我有

class Node
{
public:

string el1;
string el2;
string curr;
string name;
int ID1;
int ID2;

Node(){
//constructor is here
ID1=-1;
ID2=-1;
}

};

它有10个用数组表示的不同节点..

Node [] allNode=new Node[10];

for(i=0; i< 10; i++)
{
//create new node
allNode[i] = new Node();

std::string el = "f";
std::string el2 = "g";
std::string allNode[i].curr;

allNode[i].curr = name + boost::lexical_cast<std::string>(i);
cout << "Node name " << allNode[i].curr <<endl;

}

但是,我编译错误如下:-

error: expected unqualified-id before ‘[’ token referring to Node [] allNode=new Node[10];
error: ‘allNode’ was not declared in this scope
error: ‘name’ was not declared in this scope

请指教。谢谢。

【问题讨论】:

  • Martin 为您格式化了源代码,但您应该自己格式化它,这样更有意义,并且当您拥有所有选项卡并返回时,您可以轻松发现其中的错误..

标签: c++ compiler-errors


【解决方案1】:

在 C++ 中,将方括号放在变量名之后,例如

Node allNode[10];

但是,在处理动态分配的数组时,请使用指针类型:

Node *allNode = new Node[10];

【讨论】:

    【解决方案2】:

    代码中有多个问题。第一个 new Node[10] 返回第一个对象的地址,所以你的语句应该是 Node* allNode = new Node[10]; 。而且我不确定这句话是什么意思:std::string allNode[i].curr

    【讨论】:

      【解决方案3】:

      错误来自这一行:
      Node [] allNode=new Node[10]; 应该是:
      Node* allNode=new Node[10];

      您也没有正确访问 Node 的成员。示例代码见下文:

      int main
      {
        Node* allNodes = new Node[10]; 
      
        for(i=0; i< 10; i++) 
        { 
          //create new node 
          allNodes[i] = new Node(); 
      
          allNodes[i]->el = "f"; 
          allNodes[i]->el2 = "g"; 
          allNodes[i]->curr = name + boost::lexical_cast<std::string>(i); 
      
          std::cout << "Node name " << allNodes[i]->curr << std::endl;    
        }
      
        delete [] allNodes;
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-07
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多