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

时间:2016-07-06 18:33:30

标签: c++ class c++11 reference

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

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

这是我的代码:

labels: Each entry labels[i] must be an index in [0, num_classes) or -1. If -1, the corresponding loss will be 0, regardless of the contents of logits[i].

我收到了这些消息:

#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;
}

为什么我会得到这些?我正在尝试做什么?如果是这样,我该怎么做?

2 个答案:

答案 0 :(得分:4)

  

警告:非静态数据成员初始值设定项仅适用于-std = c ++ 11或-std = gnu ++ 11 int&amp; rtest = test;

您需要将标志-std=c++11传递给编译器,否则它默认为较旧版本的C ++,它不允许您以这种方式初始化类成员。

  

在函数'int main()'中:错误:在'。'之前预期的primary-expression令牌std :: cin&gt;&gt; Test.rtest;   错误:在'。'之前预期的primary-expression标记std :: cout&lt;&lt; &#34; \ n&#34; &LT;&LT; Test.rtest&lt;&lt; &#34; \ n&#34 ;;

这是因为.运算符需要您的类的实例,而不是类本身(这是::的用途)。声明例如Test test;并改为使用test.rtest

答案 1 :(得分:3)

您需要拥有import UIKit import iAd import AVFoundation import AudioToolbox let MAX : UInt32 = 4 let MIN : UInt32 = 1 class ViewController: UIViewController, ADBannerViewDelegate { var chances = 10 var won = 0 var highscore = 0 var random = Int(arc4random_uniform(MAX) + MIN) var sound = 1022 //sound if you won var sound2 = 1105 //sound if reset var sound3 = 1321 //sound if lose var welkmute = 1 //mute = 1 and unmute = 2 @IBOutlet weak var timeswon: UILabel! @IBOutlet weak var Banner: ADBannerView! @IBOutlet weak var Highscores: UILabel! @IBOutlet weak var mute: UIButton! @IBOutlet weak var unmute: UIButton! @IBOutlet weak var chancesleft: UILabel! func unmUte() { unmute.setTitleColor(UIColor.redColor(), forState: UIControlState()) mute.setTitleColor(UIColor.blueColor(), forState: UIControlState()) } func mUte() { mute.setTitleColor(UIColor.redColor(), forState: UIControlState()) unmute.setTitleColor(UIColor.blueColor(), forState: UIControlState()) } override func prefersStatusBarHidden() -> Bool { return true } @IBAction func Mute(sender: AnyObject) { sound = 4095 sound2 = 4095 sound3 = 4095 mUte() defaults.setObject("1", forKey: "GetMute") defaults.synchronize() } @IBAction func Unmute(sender: AnyObject) { sound = 1022 sound2 = 1105 sound3 = 1321 unmUte() defaults.setObject("2", forKey: "GetMute") defaults.synchronize() } override func viewDidLoad() { super.viewDidLoad() //unmUte() Banner.hidden = true Banner.delegate = self self.canDisplayBannerAds = true if defaults.valueForKey("GetHighScore") != nil { highscore = defaults.valueForKey("GetHighScore") as! NSInteger } Highscores.text = "Highscore: \(highscore)" if defaults.valueForKey("GetMute") != nil { welkmute = defaults.valueForKey("GetMute") as! NSInteger //ERROR: (Thread 1: breakpoint 3.1) if welkmute == 1 { mUte() } if welkmute == 2 { unmUte() } } } 的实例来访问类的非静态成员:

Test

此外,您需要使用适当的构造函数初始化引用,除非您启用了int main() { Test t; // <<<<<<<< std::cout << "Enter an integer: "; std::cin >> t.rtest; std::cout << "\n" << t.rtest << "\n"; } 编译器标志,因为错误消息显示:

-std=c++11