标签: reference

使用*this来初始化引用

我正在尝试ShadeRec使用其构造函数初始化我的类的实例:

ShadeRec(World& world);
Run Code Online (Sandbox Code Playgroud)

所以我转到它:

ShadeRec sr(*this);
Run Code Online (Sandbox Code Playgroud)

其中"this"是World类的一个实例.

我收到以下错误:

World.cpp: In member function ‘ShadeRec World::hitObjects(const Ray&) const’:
World.cpp:52: error: no matching function for call to ‘ShadeRec::ShadeRec(const World&)’
ShadeRec.h:17: note: candidates are: ShadeRec::ShadeRec(const ShadeRec&)
ShadeRec.h:15: note:                 ShadeRec::ShadeRec(World&)
Run Code Online (Sandbox Code Playgroud)

假设问题只是World实例具有属性const,我该如何摆脱此错误消息?

c++ constructor pointers reference argument-passing

0
推荐指数
1
解决办法
139
查看次数

reset database无法删除或更新父行:外键约束失败

我有一个由包含列表(种类)的表组成的sql文件,然后是一个引用该表的主表(动物),如:

DROP    TABLE IF EXISTS `tbl_species`; 
CREATE  TABLE `tbl_species` (
    specie                  VARCHAR(10) PRIMARY KEY
) ENGINE=InnoDB             DEFAULT CHARSET=utf8;
INSERT INTO `tbl_species`   VALUES ('dog');
INSERT INTO `tbl_species`   VALUES ('cat');
INSERT INTO `tbl_species`   VALUES ('bird');

DROP    TABLE IF EXISTS `tbl_animal`; 
CREATE TABLE `tbl_animal` (
    id_animal   INTEGER     NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name        VARCHAR(25) NOT NULL DEFAULT "no nombre",
    specie      VARCHAR(10) NOT NULL DEFAULT "dog",
    FOREIGN KEY (specie)        REFERENCES `tbl_species`     (specie),
    CONSTRAINT `uc_Info_Animal` UNIQUE (`id_animal`)           
) ENGINE=InnoDB                 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Run Code Online (Sandbox Code Playgroud)

这在sqlfiddle上工作没有问题,但是当我在服务器上执行sql文件时,我收到以下错误: …

mysql reference foreign-keys

0
推荐指数
1
解决办法
3716
查看次数

指针和副本

我从C++开始,我对指针有一些疑问,而且它是副本.

我打算写一个例子:

class Abc{
  Qwe q;
}

Abc* a = new Abc();
Abc* b = new Abc();
b->q = a->q; //??
Run Code Online (Sandbox Code Playgroud)

这项任务会发生什么?是'a'将'q'的副本给'b'?

问题是我想对两个指针都有不同的'q',我不知道如何复制它.就像在例子中?

谢谢

c++ copy reference

0
推荐指数
1
解决办法
82
查看次数

Javascript:使用变量引用数组,而不是复制它

假设我有两个javascript数组,如下所示:

arrA = [1,2,3]
arrB = [4,5,6]
Run Code Online (Sandbox Code Playgroud)

有没有办法可以用不同的变量名称引用它们然后再路上?如果我这样做:

arrC = arrA
arrD = arrB
Run Code Online (Sandbox Code Playgroud)

它创建初始数组的副本,而不是指向它们的指针/引用.所以,如果我搞砸了价值arrC,arrA就不会更新.有办法解决这个问题吗?

谢谢.

javascript arrays pointers reference

0
推荐指数
1
解决办法
124
查看次数

为什么指针不能转换为引用?

我在多个来源中读到,C++引用只不过是一个带有编译时间限制的指针.

如果这是真的,为什么我被迫取消引用一个指针,以便将它传递给一个需要参数的函数?

void FooRef(const int&);
void FooPointer(const int*);

int main()
{
    int* p = new int(5);
    FooPointer(p);
    FooRef(*p); // why do I have to dereference the pointer?

    ...
}
Run Code Online (Sandbox Code Playgroud)

据我了解,如果我要传递intFooRef编译器将为我创建变量地址的指针(引用),但如果该类型已经是指针,那么解除引用它似乎毫无意义.在我看来,我正在取消引用一个指针,只是为了让编译器从取消引用的值创建另一个指针,这对我来说似乎毫无意义.
仅复制指针而不仅仅是引用+引用该值是不是更简单/更高效?(也许这真的发生了什么?)

我在这里错过了什么吗?调用FooRef这种情况比调用慢FooPointer吗?
在编译期间,引用和指针是否真的产生相同的代码?

c++ pointers reference

0
推荐指数
1
解决办法
297
查看次数

快速参考静态方法

是否有可能在没有引用其类的情况下调用方法?

例如,你有一个帮助类:

class HelperTools
{
    public static void DoWork()
    { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)

然后你需要调用它:

class MainClass
{
    public static void Main()
    {
        HelperTools.DoWork();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以在DoWork();没有参考的情况下打电话?像这样:

public static void Main()
{
    DoWork();
}
Run Code Online (Sandbox Code Playgroud)

只是为了简单起见.

c# methods reference class shortcut

0
推荐指数
1
解决办法
732
查看次数

引用参数时方法更快吗?

有时,我得到了辅助方法,如:

private string generateReport(string doc, List<string> sheets, Blah blahblah)
{
    //doStuff()
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中看到很多这个让我想知道我是不是在搞乱计算机内存 - 来回抛出参数.在基本层面上,这个问题通过使用类级别变量来解决,但在某些情况下,我可能是从一个类派生或使用另一个类的辅助方法.所以我的问题是:

使用引用是一个更好的选择吗?即

private string generateReport(ref string doc, ref List<string> sheets, ref Blah blahblah)
{
    //doStuff()
}
Run Code Online (Sandbox Code Playgroud)

什么时候应该我使用它(如果适用)?

谢谢.

c# reference

0
推荐指数
1
解决办法
118
查看次数

C#(Visual Studio 2010)未找到包含的引用

我正在尝试在不使用MS Designer的情况下为表单编写代码.

当我编译时,我总是得到同样的错误:

System.ComponentModel.*类型在未引用的程序集中定义.

这将出现在IComponent,ISynchronizeInvoke和Component中.我想我已经引用了它.

我已经尝试删除引用并重新应用它,并切换到早期版本的.net.它必须是我环境中的东西,但我找不到它.

using System;
using System.ComponentModel;
using System.Windows.Forms;


public class EmptyForm : System.Windows.Forms.Form
{

    public EmptyForm()
    {
    }
    public static int Main()
    {
        Application.Run(new EmptyForm());
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的Visual Studio的屏幕截图.

c# reference visual-studio-2010

0
推荐指数
1
解决办法
286
查看次数

未明确引用`strcpy_s'无法编译

我按照这本书,无法编译这个例子.有什么建议?

  1 #define __STDC_WANT_LIB_EXT1__ 1
  2 #include <string.h>
  3 #include <stdio.h>
  4 
  5 
  6 int main(void)
  7 {
  8         char source[] = "Here we go...";
  9         char destination[50];
 10 
 11         if(strcpy_s(destination, sizeof(destination), source))
 12                 printf("An error occurred copying the string.n");
 13 
 14 
 15         return 0;
 16 }
Run Code Online (Sandbox Code Playgroud)

错误:

/tmp/ccc5KZDZ.o: In function `main':
test.c:(.text+0x48): undefined reference to `strcpy_s'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

c reference undefined tr24731 strcpy

0
推荐指数
1
解决办法
5103
查看次数

c ++中的指针与引用

在c ++中,这适用于指针

#include <iostream>

using namespace std;

struct Base {
    virtual void base_method() {
        cout << "this is the base\n";
    }
};

struct Derived : public Base {
    void base_method() {
        cout << "this is the child\n";
    }
};

void test(Base & b) {
    b.base_method();
}

void test2(Base * b) {
    b->base_method();
}

int main() {
    Derived * d;
    Derived & d1();
    test2(d); //this works 
    test(d1); //this doesn't
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么你不能用像Child & c()传入测试函数的引用做同样的事情.我问这个,因为指针和引用往往表现相似

c++ pointers reference

0
推荐指数
1
解决办法
236
查看次数