我有以下的代码序列,我不理解编译错误(下面的代码)。
提前谢谢你,
尤莲
class X {
public:
int a;
X()
{
a = 0;
}
bool operator == (const X&r)
{
return a == r.a;
}
bool operator != (const X&r)
{
return !( *this == r );
}
};
class DX : public X
{
public:
i
我现在在做一个关于移动机器人的任务。我正在使用QT-Creator在Windows上进行开发,使用CMake和Visual C++编译器10.0。
由于机器人正在Ubuntu上工作,我需要用x86编译器在Ubuntu上使用QT-Creator编译projekt。
下面是关于Box类的问题,它只是存储一些int值:
Box.h
public:
Box();
Box(int name, int sX, int sY, int width, int heigth);
C++只允许重载=运算符作为成员函数,而不是全局函数。
Bruce Eckel说if it was possible to define operator= globally, then you might attempt to redefine the built-in = sign.,由于这个原因,你只能重载=运算符作为成员函数。
如果C++已经定义了=运算符,那么为什么还要定义+、-等其他运算符呢?不是由C++定义的,因为它们可以作为非成员函数重载。?
我正在尝试更仔细地理解C++中的运算符。
我知道C++中的运算符基本上就是函数。我不明白的是,这个函数是什么样子的?
举个例子:
int x = 1;
int y = 2;
int z = x + y;
最后一行如何翻译?是不是:
int z = operator+(x,y);
或
int z = x.operator+(y);
当我同时尝试这两种方法时,编译器出现错误。我调用它们是错误的,还是不允许直接调用C++中的运算符?
我在C++中学习了lambda的历史,并看到了下面的代码(它不是lambda),但我很惊讶它是如何工作的
struct Printer{
void operator() (int x) const{
std::cout << x << '\n';
}
};
int main(){
std::vector <int> vint;
//doing it the C++ 03 way
vint.push_back(1);
vint.push_back(7);
std::for_each(vint.beg
以下面的代码为例:
template<class Derived>
struct base {
Derived operator++(int){
auto tmp = static_cast<Derived &>(*this);
++static_cast<Derived &>(*this);
return tmp;
}
};
struct der : public base<der> {
der &operator++(){
ret
好的,我有一个用户定义的类型,名为fraction,它用分子和分母表示普通分数。代码如下:
class Fraction
{
private:
int numerator;
int denominator;
public:
Fraction(int numer,int denom)
:numerator(numer),denominator(denom){}
int get_denom(){return denominator;}
int get_numer(){return numerator;}
};
正如您所看到的,它是在一个头文件中完全实现的。
所以我想
在这些c++示例中:
1. int operator+ ( Jazz &lhs,Jazz &rhs );
2. Jazz & Jazz operator= (const Jazz &);
3. Jazz & operator+ ( const Jazz & )
我理解c++中操作符重载背后的基本概念。我不知道的是:
在第二个示例中,是否需要在重载operator=之前声明和定义复制构造函数?
如何区分成员和非会员操作符超载?
第一个示例是非成员的,但是它可以访问类实例,并与它们一起工作?
第三个例子也是非会员的,但它的类型是爵士乐吗?
在C++中重载运算符C++时,我得到了一个编译错误。以下是代码:
#include <iostream>
using namespace std;
class Age{
private:
int age;
public:
Age(int age): age(age){
}
Age& operator++(){
Age ages(this->age + 1);
return ages;
}
int get
自从上一次用C/C++写东西以来,我已经十多年了,现在我遇到了一个我无法解决的问题。基本上,我有两个类,比如说CA和CB,其中CA看起来像向量,CB看起来像二维矩阵。
我面临的问题是,我想要构造一个CB类型的对象,并使用另一个CB类型的对象。因此,我将一个已正确初始化的CB类型的对象作为参数传递,但当我这样做时,会得到表单./B.h:97:43: error: no viable overloaded operator[] for type 'const CB<double>'的一个错误。
复制对象的方式是依赖CA类的复制机制。尽管如此,使用类CA的另一个初始化对象
我已经很长时间没有用C++编码了,我正在尝试修复一些旧代码。
我要说的是:
TOutputFile& TOutputFile::operator<<(TOutputFile&, T)' must have exactly one argument
关于下列代码:
template<class T>
TOutputFile &operator<<(TOutputFile &OutFile, T& a);
class TOutputFile : public Tiofile{
public:
TOutput
我有一些代码应该重载操作符<<并能够打印一个矩阵对象,但是由于某种原因,它失败了。下面是它的代码:(Matirx.h文件)
#pragma once
#include <iostream>
using std::cout;
using std::endl;
using std::ostream;
template <int N=1, int M=1, class T = int>
class Matrix {
int rows;
int cols;
T matrix[N][M];
public:
Matrix(T matrixV
我喜欢让我的C++成员变量成为常量,如果它们在对象构造后不应该被改变,然而,有时它们需要被STL修改。例如,如果我的类有一个带有const成员的向量,我试图交换向量中的两个元素,STL尝试使用默认生成的operator=(),但由于const成员变量而失败。
我觉得operator=()就像是一个构造器,因为整个对象都在被创建,因此我希望以某种方式允许operator=(),同时仍然拥有常量成员变量。
有没有办法在C++03中做到这一点?如果不是,那么在C++11中呢,也许就地构建就是为了这个?
class Foo {
const int _id;
static int _gener
我已经知道函数对象可以在另一个函数的体内定义。当我试图在主函数中定义一个简单的函数时,会发生错误。
int main(){
void f(){}
return 0;
}
一个函数能在另一个函数中定义吗?
一个类和它的一些成员函数可以在另一个函数或另一个类主体中单独定义吗?(粗体字编辑)
有什么规定要遵守吗?
编辑:非常感谢!但我错误地把类体作为功能,即粗体字,现在它被纠正了。你能告诉我更多吗?
编辑2:关于第二个问题,我应该写:一个类的成员函数可以定义在一个叫做F的函数中,而类声明也在函数F中,而whatif F是一个类定义吗?就像这两个:
//F is a function
当我使用这样的代码时,我似乎得到了一个意想不到的结果:
class Base
{
public:
template <typename T>
bool operator <<(int(*fx)(T)) {
return true;
}
};
class Sub : public Base
{
public:
template <typename T>
bool operator <<(T t) {
return false;
}
};
int foo(int a)
MS Visual c++ 2010编译器告诉我operator==有太多的参数,但如果我只放一个参数,就让它过去吧。这里发生了什么事?我从Stroustrup的书中得到了这个函数,我非常肯定他知道如何在c++中重载运算符。
class Book
{
public:
Book(){}
Book(long long isbn,string ttl, string athr, int cpyrght_dt)
:ISBN(isbn), title(ttl), author(athr), copyright_date(cpyrght_dt) {}
//..
我目前正在为现有的C++库编写Cython包装器。我在C++中有一个重载的非会员操作符,如
Data operator+(Data const& a, Data const& b)
在描述头的pxd文件中,我写了
cdef extern from 'blabla.h':
Data operator+(const Data&, const Data&)
现在我如何在另一个operator+文件中使用这个pyx?