- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
::Iter::Iter( )' referenced from C:\USERS\HOME\CPPTEST\UBERLIST.OBJ"-6ren"> ::Iter::Iter( )' referenced from C:\USERS\HOME\CPPTEST\UBERLIST.OBJ"-我正在尝试用 C++ 实现双向链表,现在我正在添加迭代器功能。在我添加这些方法之前,一切都没有错误地编译并且(可能)运行良好: template typename UberList::Iter Ube-6ren">
我正在尝试用 C++ 实现双向链表,现在我正在添加迭代器功能。在我添加这些方法之前,一切都没有错误地编译并且(可能)运行良好:
template<class T>
typename UberList<T>::Iter UberList<T>::begin() const
{
Iter it;
it.curr = head;
return it;
}
template<class T>
typename UberList<T>::Iter UberList<T>::end() const
{
Iter it;
it.curr = tail;
return it;
}
然后我明白了:
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
UberList2.cpp:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external 'UberList<int>::Iter::Iter()' referenced from C:\USERS\HOME\CPPTEST\UBERLIST2.OBJ
我在这里看到类似的问题,它可能是一个链接问题,但我不确定这是否是我的情况,因为我只使用一个文件。对于这个奇怪的问题,我将不胜感激。
这是我的类(class)的完整代码:
#include <iostream>
using namespace std;
template<class T>
class UberList
{
friend class Iter;
private:
struct Node
{
friend class Iter;
T data;
Node *prev;
Node *next;
Node()
:data(0), prev(0), next(0)
{
}
Node(const T& d, Node *p, Node *n)
: data(d), prev(p), next(n)
{
}
};
public:
class Empty
{
};
class BadIter
{
};
class Iter
{
friend class UberList;
public:
//constructors
Iter();
Iter(Node *n)
{
curr = n;
}
T& operator*()
{
return curr->data;
}
Iter& operator++()
{
if(curr == 0)
throw BadIter();
curr = curr->next;
return *this;
}
Iter& operator--()
{
if(curr == 0)
throw BadIter();
curr = curr->prev;
return *this;
}
bool operator==(const Iter& it)
{
return curr == it.curr;
}
bool operator!=(const Iter& it)
{
return curr != it.curr;
}
private:
Node *curr;
};
UberList()
:length(0), head(0), tail(0)
{
}
~UberList();
int size()
{
return length;
}
bool empty()
{
return length == 0;
}
void pushBack(const T& elem);
void popBack();
void pushFront(const T& elem);
void popFront();
Iter begin() const;
Iter end() const;
Iter erase(typename UberList<T>::Iter curr);
void insertBefore(const T& elem, Iter curr);
private:
int length;
Node *head;
Node *tail;
};
template<class T>
typename UberList<T>::Iter UberList<T>::begin() const
{
Iter it;
it.curr = head;
return it;
}
template<class T>
typename UberList<T>::Iter UberList<T>::end() const
{
Iter it;
it.curr = tail;
return it;
}
template<class T>
UberList<T>::~UberList()
{
while(head != 0)
{
popBack();
}
}
template<class T>
void UberList<T>::pushBack(const T& elem)
{
if(empty())
{
head = tail = new Node(elem, 0, 0);
}
else
{
tail = tail -> next = new Node(elem, tail, 0);
}
++length;
}
template<class T>
void UberList<T>::popBack()
{
if(empty())
throw Empty();
if(length == 1)
{
delete head;
head = tail = 0;
}
else
{
tail = tail->prev;
delete tail->next;
tail->next = 0;
}
}
template<class T>
typename UberList<T>::Iter UberList<T>::erase(typename UberList<T>::Iter curr)
{
if(curr.curr == 0)
throw BadIter();
if(curr.curr == head)
{
popFront();
}
else if(curr.curr == tail)
{
popBack();
}
else
{
curr.curr->prev->next = curr.curr->next;
curr.curr->next->prev = curr.curr->prev;
Node *t = curr.curr->next;
delete curr.curr;
return Iter(t);
}
}
template<class T>
void UberList<T>::insertBefore(const T& elem, Iter curr)
{
if(curr.curr == 0)
throw BadIter();
if(curr.curr == head)
{
pushfront(elem);
}
else
{
curr.curr->prev = curr.curr->prev->next = new Node(elem, curr.curr->prev, curr.curr);
}
}
int main()
{
int a;
UberList<int> ulist;
while (cin >> a)
{
ulist.pushBack(a);
}
for (UberList<int>::Iter it = ulist.begin(); it != ulist.end(); ++it)
{
cout << *it << " ";
}
return 0;
}
最佳答案
Iter 默认构造函数已声明但未定义。将第 48 行更改为
Iter() { 当前 = NULL;
关于C++ 问题: "Unresolved external ' UberList<int>::Iter::Iter( )' referenced from C:\USERS\HOME\CPPTEST\UBERLIST.OBJ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470528/
我正在尝试使用 y 组合器在 Scala 中定义 gcd: object Main { def y[A,B]( f : (A => B) => A => B ) : A => B = f(y(f)
我正在尝试了解返回指向函数的指针的函数,在我尝试编译代码后,它给了我这种错误: cannot convert int (*(int))(int) to int (*(int))(int) in ass
所以我一直在关注 youtube 上的游戏编程教程,然后弹出了这段代码:bufferedImageObject.getRGB(int, int, int, int, int[], int, int);
我正在将时间现在 与存储在数据库某处的时间进行比较。数据库中存储的时间格式为“yyyyMMddHHmmss”。例如,数据库可能会为存储的时间值返回 201106203354。然后我使用一个函数将时间现
例如 Maze0.bmp (0,0) (319,239) 65 120 Maze0.bmp (0,0) (319,239) 65 120 (254,243,90) Maze0.bmp (0,0) (
评论 Steve Yegge的post关于 server-side Javascript开始讨论语言中类型系统的优点和这个 comment描述: ... examples from H-M style
我正在研究 C 的指针,从 Deitel 的书中我不明白 int(*function)(int,int) 和 int*function(int, int) 表示函数时。 最佳答案 C 中读取类型的经验
您好,我使用 weblogic 11g 创建 war 应用程序,我对 joda time 的方法有疑问 new DateTime(int, int, int, int, int, int); 这抛出了
Create a method called average that calculates the average of the numbers passed as parameters. The
var a11: Int = 0 var a12: Int = 0 var a21: Int = 0 var a22: Int = 0 var valueDeterminant = a11 * a12
我正在为一个项目设置 LED 阵列。我得到了一个 LED 阵列,可以根据引脚变化电压进行更改,但我无法添加更多引脚。 当我尝试时,编译失败并显示错误:函数“int getMode(int, int,
除了创建对列表执行简单操作的函数之外,我对 haskell 还是很陌生。我想创建一个列表,其中包含 Int 类型的内容, 和 Int -> Int -> Int 类型的函数. 这是我尝试过的: dat
这个问题已经有答案了: Java add buttons dynamically as an array [duplicate] (4 个回答) 已关闭 7 年前。 StackOverFlow问题今天
我有几个 EditText View ,我想在其中设置左侧的图像,而 setCompoundDrawablesWithIntrinsicBounds 似乎不起作用。图形似乎没有改变。 有人知道为什么会
#include using namespace std; int main() { static_assert(is_constructible, int(*)(int,int)>::val
fun sum(a: Int, b: Int) = a + b val x = 1.to(2) 我在找: sum.tupled(x),或者 sum(*x) 当然,以上都不能用 Kotlin 1.1.3
有一个函数: func (first: Int) -> Int -> Bool -> String { return ? } 返回值怎么写?我对上面 func 的返回类型感到很困惑。 最
type foo = A of int * int | B of (int * int) int * int 和 (int * int) 有什么区别?我看到的唯一区别在于模式匹配: let test_
我正在尝试制作一个 slider 游戏。在这个类中,我使用 Graphics 对象 g2 的 drawImage 方法来显示“拼图”的 block 。但在绘制类方法中,我收到此错误:找不到符号方法dr
我试着理解这个表达: static Func isOdd = i => (i & 1) == 1; 但是这是什么意思呢? 例如我有 i = 3。然后 (3 & 1) == 1 或 i = 4。然后
我是一名优秀的程序员,十分优秀!