Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何声明对同一类中成员的引用?_C++_Class_C++11_Reference - Fatal编程技术网

C++ 如何声明对同一类中成员的引用?

C++ 如何声明对同一类中成员的引用?,c++,class,c++11,reference,C++,Class,C++11,Reference,我看了很多其他的问题和答案,似乎没有人有和我一样的问题 我试图在类中引用变量。我取出了我正在编写的较大程序的一部分,并将其隔离在一个小文件中:test.cpp。我想我的问题可能与我如何使用变量和引用有关,但是在更大的程序中出现了相同的消息 这是我的密码: #include <iostream> class Test { public: int test; int& rtest = test; }; int main() { std::cout &l

我看了很多其他的问题和答案,似乎没有人有和我一样的问题

我试图在类中引用变量。我取出了我正在编写的较大程序的一部分,并将其隔离在一个小文件中:test.cpp。我想我的问题可能与我如何使用变量和引用有关,但是在更大的程序中出现了相同的消息

这是我的密码:

#include <iostream>

class Test {
public:
    int test;
    int& rtest = test;
};

int main() {
    std::cout << "Enter an integer: ";
    std::cin >> Test.rtest;
    std::cout << "\n" << Test.rtest << "\n";
    return 0;
}
#包括
课堂测试{
公众:
智力测验;
int&rtest=测试;
};
int main(){
std::cout>Test.rtest;

std::cout您需要一个
Test
的实例来访问类的非静态成员:

int main() {
    Test t; // <<<<<<<<
    std::cout << "Enter an integer: ";
    std::cin >> t.rtest;
    std::cout << "\n" << t.rtest << "\n";
}

您需要有
Test
的实例才能访问类的非静态成员:

int main() {
    Test t; // <<<<<<<<
    std::cout << "Enter an integer: ";
    std::cin >> t.rtest;
    std::cout << "\n" << t.rtest << "\n";
}
警告:非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 int&rtest=test

您需要将标志<代码> -STD= C++ 11 传递给编译器,否则默认为C++的旧版本,不允许用这种方式初始化类成员。 在函数“int main()”中:错误:“.”标记std::cin>>Test.rtest之前应为主表达式; 错误:应在“.”标记std::cout之前使用主表达式 警告:非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 int&rtest=test

您需要将标志<代码> -STD= C++ 11 传递给编译器,否则默认为C++的旧版本,不允许用这种方式初始化类成员。 在函数“int main()”中:错误:“.”标记std::cin>>Test.rtest之前应为主表达式;
错误:应在“.”之前使用主表达式。令牌std::cout将标志传递给g++确实有效,但我花了几分钟的时间研究如何执行。将标志传递给g++确实有效,但我花了几分钟的时间研究如何执行。回答很好。感谢共享编译器标志尼斯答案。感谢分享编译器标志
class Test {
public:
    int test;
    int& rtest; // Nope!  = test;

    Test() : test(), rtest(test) {} // <<<<<<<<<<<<<<<<<<
};