簡體   English   中英

附加到向量時出現“未命名類型”錯誤

[英]“does not name a type” error when appending to vector

#include <vector>
#include "Node.h" // EDIT: added
Node node1(true,11);
Node node2(true,04);
std::vector<Node> room1;
room1.push_back(node1);

我只想將node1添加到名為room1的節點的向量中。對我來說,它看起來完全像教程中的指示,但是我收到一條錯誤消息:“ room1未命名類型”。


編輯:節點的標題已包括在內。 Node所做的只是一個獲取(bool,int)並將其存儲。 (該程序長達數百行,只是試圖保持內容的相關性。)

關於room1未命名類型的錯誤來自您的代碼不在函數或對象方法內。 您可以將定義放在文件的外部范圍中,但不能放在要執行的任意代碼行中。 代碼需要上下文才能運行。

#include <vector>
#include "Node.h"

int main() {
    Node node1(true,11);
    Node node2(true,04);
    std::vector<Node> room1;
    room1.push_back(node1);
}

請注意,根據C ++規范,對main()的要求非常具體,這是不從main返回結果的:

main()在C和C ++中應該返回什么?

如果您編寫的其他函數具有返回類型,則應具有return語句。

C++語法禁止這樣做,因為在名稱空間范圍內唯一允許的內容是聲明 這些可以是類,函數或嵌套的名稱空間聲明。 由於room1.push_back(node1); 不屬於此類別,則您的程序格式錯誤。 您可能希望將其放在函數中。 最簡單的示例將其放入main

#include <vector>
#include "Node.h" // EDIT: added
Node node1(true,11);
Node node2(true,04);
std::vector<Node> room1;

int main()
{
room1.push_back(node1);
return 0;
}

您可能還希望將room1node1node2移到main

您忘記了包含Node的標頭,或更Node是, Node在當前翻譯單元中不是可見類型。

暫無
暫無

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

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