我用XCode编写了以下C++代码,给出了两个我无法理解的错误:
#include <iostream>
class Buch{
public:
Buch (long int nummer = 0, char autor[25] = (char*)"", int jahr = 0, bool ausgel = false);
long int getNr();
int getJahr();
protected:
long int __nummer;
char __autor[25];
int
在C++中,如果将基类对象实例化为基本对象,并随后向下转换为派生对象,这是否是未定义的行为?
当然,我会假设它肯定是未定义的行为,因为派生类对象可能有基类不存在的成员变量。因此,如果类实例化为基对象,那么这些变量实际上就不存在,这意味着通过派生类指针访问它们必须导致未定义的行为。
但是,如果派生类只是提供额外的成员函数,但不包括任何进一步的成员数据,怎么办?例如:
class Base
{
public:
int x;
};
class Derived : public Base
{
public:
void foo();
};
int main()
来自C#背景的我或多或少对C++中返回方法处理的怪异行为感到困惑。我现在关注的是C++中的方法,通过引用返回并不是一种非常有用的技术,这是因为--与C#不同--在方法体中声明的任何变量一旦控件退出该方法就会超出范围。
因此,在C++中,甚至不能编译(但是C#中的等效版本可以编译):
int& DoubleValue(int nX)
{
int nValue = nX * 2;
return nValue; // return a reference to nValue here
} // nValue goes out of scope here
通过引用返回的唯一有用
同时使用cppinsights查看C++如何查看lambda表达式。下面的部分把我搞糊涂了。 // C++17
int main(){
int x = 10;
auto ff = [](int a) constexpr { return 1.2; };
} 到这个 int main()
{
int x = 10;
class __lambda_3_14
{
public:
inline /*constexpr */ double operator()(int a) const
{
return 1.2;
}
我正在尝试使用C++来实现上面的系统。以前,我使用C#和OOP来编写程序,所以这将是我第一次使用C++,我知道这两种语言之间存在一些差异。我正在尝试做的是我想要从日志班级的成员列表中统计投票者的数量。
在C#中,我将使用
foreach(Member m in _members) {
if(Member m is Voter) {
votercount++;
}
}
但是,我不确定在cpp中,这个工具是正确的吗?在我的Logbook.h文件中
class Logbook
{
private:
std::list<Member> _m
我是C++中的工厂模式的新手,当我尝试实现一个方法时,我得到了标题,我得到了以下错误:
在静态成员函数中对成员'creationFunctions‘的使用无效
typedef Shape (*createShapeFunction)(void);
/* thrown when a shape cannot be read from a stream */
class WrongFormatException { };
class ShapeFactory {
public:
static void registerFunction(const std::string &a
假设我们有这个密码
class A {
public:
A() : x(1) {}
virtual ~A() {}
int x;
};
class B {
public:
B() : y(2) {}
virtual ~B() {}
void g()
{
cout << "B::" << y << endl;
}
int y;
};
class C : private A, private B {
public:
void f()
在这个例子中
class MyException: std::runtime_error // note, there is no public keyword in inheritance
{
public:
MyException(const std::string & x)
: std::runtime_error(x)
{}
};
int main( )
{
try
{
throw MyException("foo");
}
catch (std::exception & e )
{
所以我有两门课
#pragma once
#include "B.h"
class A {
public:
B getB() {}
};
和
#pragma once
#include "A.h"
class B : public A {
};
错误:“a”基类未定义。
两者都需要在另一个之前声明,所以我如何解决这个问题?
如果将代码重新排序到一个文件中,则如下所示:
#include <iostream>
using namespace std;
class B : public A {
};
class A {
public:
为了学术目的,我试图制作一个自定义的碰撞引擎,我被一个通用的c++编程问题困住了。我已经有了所有正常工作的几何图形,碰撞测试也正常工作。
引擎使用这两个类创建要测试的几何图形队列:
class collidable;
template<typename geometry_type>
class collidable_object : public collidable;
由于多个几何类型是可能的,所以我不想手动指定要测试的任何冲突。
相反,我使用了这种“技术”来实现双重调度:
class collidable
{
public:
typedef bool (collida
首先,澄清一下,我是,而不是,谈论的是取消引用无效指针!
考虑以下两个例子。
示例1
typedef struct { int *p; } T;
T a = { malloc(sizeof(int) };
free(a.p); // a.p is now indeterminate?
T b = a; // Access through a non-character type?
示例2
void foo(int *p) {}
int *p = malloc(sizeof(int));
free(p); // p is now indeterminate?
foo(p);
我是c++.I新手,被告知结构和类几乎是same.The,主要区别是c++中的类在默认情况下是私有的,而结构是公共的。
我有两种不同的代码,我们使用指针来构造成员和类成员。
struct Simple { int a; };
int main() {
Simple so, *sp = &so;
sp->a;
so.a;
}
我们以上述方式使用指针来构造成员。
为什么我们必须使用指向类成员的指针呢?
class X {
public:
int a;
void f(int b) {
cout << "The value of b is "&
好的,这是一份停车罚单申请。我相信你们以前都见过/做过。这是针对C++的,我在获取包含类的方法来访问朋友类的私有成员时遇到了问题。我知道这完全是一个语法错误,但是我似乎找不到一个对我来说有意义的例子来说明语法到底是什么。
这是我收到错误的(其中之一)行。它们都是相同的错误,
cout<<"Please visit your local police department issued by "<<policeOfficer.name<<" badge number "<<policeOfficer.badg