[英]c++ error: An object not declared in this scope
誰能解釋一下為什么我收到以下錯誤?
A.cpp: In member function ‘void A::NewObject(int)’:
A.cpp:11: error: ‘list_a’ was not declared in this scope
我嘗試在各個地方聲明 list_a 。 現在它在 prog.cpp 中,在 main() 中。 我不明白為什么據稱它不在范圍內。
我的簡化代碼如下。 我的想法是將 A 類的對象添加 (NewObject) 到列表 (Add),同時另外執行在 A 類中定義的某種測試 (Compare)。
我是 C++ 初學者,所以我特別感謝詳細的答案。 提前致謝。 以下是文件:
//A.h
#ifndef A_H
#define A_H
class A
{
private:
int id;
int Compare(int, int);
public:
A()
{
id = 0;
}
A(int i)
{
id = i;
}
void NewObject(int i);
};
#endif
//A.cpp
#include "A.h"
#include "List.h"
void A::NewObject(int i)
{
list_a->Add(i);
}
int A::Compare(int a, int b)
{
if ( a>b ) return 1;
if ( a<b ) return -1;
else return 0;
}
//List.h
#ifndef LIST_H
#define LIST_H
template<typename T>
class Node
{
public:
T* dana;
Node *nxt, *pre;
Node()
{
nxt = pre = 0;
}
Node(const T el, Node *n = 0, Node *p = 0 )
{
dana = el; nxt = n; pre = p;
}
};
template<typename T, typename U>
class List
{
public:
List()
{
head = tail = 0;
}
void Add(const U);
protected:
Node<T> *head,*tail;
};
#endif
//List.cpp
#include <iostream>
#include "List.h"
template<typename T, typename U>
void List<T,U>::Add(const U el)
{
int i = 5;
Node<T> *hlp = new Node<T>();
head = hlp;
if ( Compare(el,i) > i )
std::cout << "Ok" << std::endl;
}
//prog.cpp
#include "List.h"
#include "A.h"
int main()
{
int i = 5;
List<class A, int> *list_a = new List<class A, int>();
A obj;
obj.NewObject(i);
}
答案很簡單:您從未在 A 類中聲明過名為 list_a 的變量。僅此而已。
這樣做:
class A
{
private:
List <int> list_a;
int id;
int Compare(int, int);
public:
A()
{
id = 0;
}
A(int i)
{
id = i;
}
void NewObject(int i);
};
從列表類中刪除 U 模板參數。
發生此類錯誤時,可能是main
函數中的類名不匹配。 檢查它們是否相同。 只有這樣,您才會收到類似not declared in this scope
的錯誤,這意味着“它們未正確聲明”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.